fix bug
This commit is contained in:
		
							
								
								
									
										41
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										41
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -2879,6 +2879,35 @@ | |||||||
|       "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", |       "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|  |     "@types/quill": { | ||||||
|  |       "version": "2.0.9", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/@types/quill/-/quill-2.0.9.tgz", | ||||||
|  |       "integrity": "sha512-/n40Ypp+jF3GDLqB/5z1P+Odq1K98txXbBgRDkG6Z90LGC1AwQPtZWNeOdDg0yUlgBSUASmpeDn3eBPUuPXtuw==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "parchment": "^1.1.2", | ||||||
|  |         "quill-delta": "^4.0.1" | ||||||
|  |       }, | ||||||
|  |       "dependencies": { | ||||||
|  |         "fast-diff": { | ||||||
|  |           "version": "1.2.0", | ||||||
|  |           "resolved": "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.2.0.tgz", | ||||||
|  |           "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", | ||||||
|  |           "dev": true | ||||||
|  |         }, | ||||||
|  |         "quill-delta": { | ||||||
|  |           "version": "4.2.2", | ||||||
|  |           "resolved": "https://registry.npmmirror.com/quill-delta/-/quill-delta-4.2.2.tgz", | ||||||
|  |           "integrity": "sha512-qjbn82b/yJzOjstBgkhtBjN2TNK+ZHP/BgUQO+j6bRhWQQdmj2lH6hXG7+nwwLF41Xgn//7/83lxs9n2BkTtTg==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "fast-diff": "1.2.0", | ||||||
|  |             "lodash.clonedeep": "^4.5.0", | ||||||
|  |             "lodash.isequal": "^4.5.0" | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "@types/selenium-webdriver": { |     "@types/selenium-webdriver": { | ||||||
|       "version": "3.0.19", |       "version": "3.0.19", | ||||||
|       "resolved": "https://registry.npmmirror.com/@types/selenium-webdriver/download/@types/selenium-webdriver-3.0.19.tgz", |       "resolved": "https://registry.npmmirror.com/@types/selenium-webdriver/download/@types/selenium-webdriver-3.0.19.tgz", | ||||||
| @ -10136,12 +10165,24 @@ | |||||||
|       "resolved": "https://registry.nlark.com/lodash/download/lodash-4.17.21.tgz", |       "resolved": "https://registry.nlark.com/lodash/download/lodash-4.17.21.tgz", | ||||||
|       "integrity": "sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=" |       "integrity": "sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=" | ||||||
|     }, |     }, | ||||||
|  |     "lodash.clonedeep": { | ||||||
|  |       "version": "4.5.0", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", | ||||||
|  |       "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "lodash.debounce": { |     "lodash.debounce": { | ||||||
|       "version": "4.0.8", |       "version": "4.0.8", | ||||||
|       "resolved": "https://registry.npm.taobao.org/lodash.debounce/download/lodash.debounce-4.0.8.tgz", |       "resolved": "https://registry.npm.taobao.org/lodash.debounce/download/lodash.debounce-4.0.8.tgz", | ||||||
|       "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", |       "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|  |     "lodash.isequal": { | ||||||
|  |       "version": "4.5.0", | ||||||
|  |       "resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz", | ||||||
|  |       "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "lodash.memoize": { |     "lodash.memoize": { | ||||||
|       "version": "4.1.2", |       "version": "4.1.2", | ||||||
|       "resolved": "https://registry.nlark.com/lodash.memoize/download/lodash.memoize-4.1.2.tgz", |       "resolved": "https://registry.nlark.com/lodash.memoize/download/lodash.memoize-4.1.2.tgz", | ||||||
|  | |||||||
| @ -20,7 +20,7 @@ module.exports = { | |||||||
|   // } |   // } | ||||||
|   '//api': { |   '//api': { | ||||||
|     target: { |     target: { | ||||||
|       host: 'tms-api-test.eascs.com', |       host: 'tms-api-dev.eascs.com', | ||||||
|       protocol: 'https:', |       protocol: 'https:', | ||||||
|       port: 443 |       port: 443 | ||||||
|     }, |     }, | ||||||
|  | |||||||
| @ -38,8 +38,6 @@ export class AuthGuard extends ACLGuard { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   private handle(route: ActivatedRouteSnapshot, state: RouterStateSnapshot, type: 1 | 2, router?: string): Observable<boolean> { |   private handle(route: ActivatedRouteSnapshot, state: RouterStateSnapshot, type: 1 | 2, router?: string): Observable<boolean> { | ||||||
|     console.log(route, state); |  | ||||||
|  |  | ||||||
|     if (!router) { |     if (!router) { | ||||||
|       return type === 1 ? super.canActivate(route, state) : super.canActivateChild(route, state); |       return type === 1 ? super.canActivate(route, state) : super.canActivateChild(route, state); | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -17,7 +17,7 @@ const alainConfig: AlainConfig = { | |||||||
|     page: { show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }, |     page: { show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }, | ||||||
|     modal: { size: 'lg' } |     modal: { size: 'lg' } | ||||||
|   }, |   }, | ||||||
|   sf: { button: { search: '查询' } }, |   sf: { button: { search: '查询' }, ui: { placeholder: '请输入' } }, | ||||||
|   pageHeader: { homeI18n: 'home', recursiveBreadcrumb: true }, |   pageHeader: { homeI18n: 'home', recursiveBreadcrumb: true }, | ||||||
|   auth: { login_url: '/passport/login' }, |   auth: { login_url: '/passport/login' }, | ||||||
|   acl: { guard_url: '/exception/403' } |   acl: { guard_url: '/exception/403' } | ||||||
|  | |||||||
| @ -1,3 +1,4 @@ | |||||||
|  | <page-header-wrapper [title]="'账户详情'"></page-header-wrapper> | ||||||
| <nz-card> | <nz-card> | ||||||
|   <sv-container layout="vertical" [noColon]="true" col="4"> |   <sv-container layout="vertical" [noColon]="true" col="4"> | ||||||
|     <sv [label]="labelTpl"> |     <sv [label]="labelTpl"> | ||||||
|  | |||||||
| @ -1,3 +1,4 @@ | |||||||
|  | <page-header-wrapper [title]="''"></page-header-wrapper> | ||||||
| <nz-card> | <nz-card> | ||||||
|   <!-- <div nz-row> |   <!-- <div nz-row> | ||||||
|     <div [nzSpan]="" nz-col> |     <div [nzSpan]="" nz-col> | ||||||
| @ -20,14 +21,14 @@ | |||||||
|     [page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }" |     [page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }" | ||||||
|     [loading]="service.http.loading"> |     [loading]="service.http.loading"> | ||||||
|     <ng-template st-row="approvalStatus" let-item> |     <ng-template st-row="approvalStatus" let-item> | ||||||
|       <a [routerLink]="'/partner/account-management/recorded-detail/'+item?.id">{{item.yskmoney}}</a> |       <a [routerLink]="'/partner/account-management/am/recorded/detail/'+item?.id">{{item.yskmoney}}</a> | ||||||
|     </ng-template> |     </ng-template> | ||||||
|     <ng-template st-row="approvalStatus1" let-item> |     <ng-template st-row="approvalStatus1" let-item> | ||||||
|       <div class="text-right">{{item.approvalStatus1 | currency:' '}}</div> |       <div class="text-right">{{item.approvalStatus1 | currency:' '}}</div> | ||||||
|     </ng-template> |     </ng-template> | ||||||
|     <ng-template st-row="approvalStatus2" let-item> |     <ng-template st-row="approvalStatus2" let-item> | ||||||
|       <a class="text-right text-blue-dark" |       <a class="text-right text-blue-dark" | ||||||
|         [routerLink]="'/partner/account-management/recorded-detail/'+item?.id">{{item.yskmoney | currency:' |         [routerLink]="'/partner/account-management/am/recorded/detail/'+item?.id">{{item.yskmoney | currency:' | ||||||
|         '}}</a> |         '}}</a> | ||||||
|     </ng-template> |     </ng-template> | ||||||
|  |  | ||||||
|  | |||||||
| @ -1,3 +1,4 @@ | |||||||
|  | <page-header-wrapper [title]="'待入账明细'"></page-header-wrapper> | ||||||
| <nz-card> | <nz-card> | ||||||
|   <sv-container layout="vertical" [noColon]="true" col="4"> |   <sv-container layout="vertical" [noColon]="true" col="4"> | ||||||
|     <sv [label]="labelTpl"> |     <sv [label]="labelTpl"> | ||||||
|  | |||||||
| @ -164,7 +164,7 @@ export class PartnerAccountManagementVirtualAccountDetailComponent implements On | |||||||
|    * @param _record 当前行信息 |    * @param _record 当前行信息 | ||||||
|    */ |    */ | ||||||
|   viewDetail(_record: any) { |   viewDetail(_record: any) { | ||||||
|     window.open(location.origin + '/#/partner/account-management/account-detail'); |     window.open(location.origin + `/#/partner/account-management/am/detail/${_record?.id}`); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   close() { |   close() { | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| <!-- | <!-- | ||||||
|  * @Description  :  |  * @Description  : | ||||||
|  * @Version      : 1.0 |  * @Version      : 1.0 | ||||||
|  * @Author       : Shiming |  * @Author       : Shiming | ||||||
|  * @Date         : 2022-01-05 20:15:41 |  * @Date         : 2022-01-05 20:15:41 | ||||||
| @ -9,55 +9,56 @@ | |||||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. |  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||||
| --> | --> | ||||||
| <page-header-wrapper [title]="'提现详情'" [logo]="logo"> | <page-header-wrapper [title]="'提现详情'" [logo]="logo"> | ||||||
|     <ng-template #logo> |   <ng-template #logo> | ||||||
|         <button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()"> |     <button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()"> | ||||||
|             <i nz-icon nzType="left" nzTheme="outline"></i> |       <i nz-icon nzType="left" nzTheme="outline"></i> | ||||||
|         </button> |     </button> | ||||||
|     </ng-template> |   </ng-template> | ||||||
| </page-header-wrapper> | </page-header-wrapper> | ||||||
|  |  | ||||||
| <nz-card [nzLoading]="service.http.loading"> |  | ||||||
|     <nz-alert nzType="info" nzMessage="提现信息" class="mb-md"></nz-alert> |  | ||||||
|     <div se-container [labelWidth]="130"> |  | ||||||
|         <se label="网络货运人"> |  | ||||||
|             {{formData?.ltdName}} |  | ||||||
|         </se> |  | ||||||
|         <se label="银行类型"> |  | ||||||
|             {{formData?.bankType==='1'?'平安银行':'浦发银行'}} |  | ||||||
|         </se> |  | ||||||
|         <se label="提现单号"> |  | ||||||
|             {{formData?.refundApplyCode}} |  | ||||||
|         </se> |  | ||||||
|         <se label="账户名称"> |  | ||||||
|             {{formData?.bankAccountName}} |  | ||||||
|         </se> |  | ||||||
|         <se label="提现时间"> |  | ||||||
|             {{formData?.createTime}} |  | ||||||
|         </se> |  | ||||||
|         <se label="虚拟账户"> |  | ||||||
|             {{formData?.virtualAccount}} |  | ||||||
|         </se> |  | ||||||
|         <se label="提现状态"> |  | ||||||
|             {{formData?.refundStatusLabel}} |  | ||||||
|         </se> |  | ||||||
|         <se label="提现金额"> |  | ||||||
|             {{formData?.amount | currency}} |  | ||||||
|         </se> |  | ||||||
|         <se label="银行流水号"> |  | ||||||
|             {{formData?.bankSerialNumber}} |  | ||||||
|         </se> |  | ||||||
|         <se label="提现至银行卡"> |  | ||||||
|             {{formData?.bankCardNumber}} |  | ||||||
|         </se> |  | ||||||
|         <se label="银行回单" col="1"> |  | ||||||
|             <a (click)="downBack()">{{formData?.refundStatus==='3'?'下载回单':'暂无回单'}}</a> |  | ||||||
|         </se> |  | ||||||
|     </div> |  | ||||||
|  |  | ||||||
|     <nz-alert nzType="info" nzMessage="提现进度" class="mb-md mt-md"></nz-alert> | <nz-card [nzLoading]="service.http.loading"> | ||||||
|     <div nz-row class="mt-xl"> |   <nz-alert nzType="info" nzMessage="提现信息" class="mb-md"></nz-alert> | ||||||
|         <div nz-col nzSpan="12" nzOffset="1"> |   <div se-container [labelWidth]="130"> | ||||||
|             <app-logistics-time-line [data]="timeLineData"></app-logistics-time-line> |     <se label="网络货运人"> | ||||||
|         </div> |       {{formData?.ltdName}} | ||||||
|  |     </se> | ||||||
|  |     <se label="银行类型"> | ||||||
|  |       {{formData?.bankType==='1'?'平安银行':'浦发银行'}} | ||||||
|  |     </se> | ||||||
|  |     <se label="提现单号"> | ||||||
|  |       {{formData?.refundApplyCode}} | ||||||
|  |     </se> | ||||||
|  |     <se label="账户名称"> | ||||||
|  |       {{formData?.bankAccountName}} | ||||||
|  |     </se> | ||||||
|  |     <se label="提现时间"> | ||||||
|  |       {{formData?.createTime}} | ||||||
|  |     </se> | ||||||
|  |     <se label="虚拟账户"> | ||||||
|  |       {{formData?.virtualAccount}} | ||||||
|  |     </se> | ||||||
|  |     <se label="提现状态"> | ||||||
|  |       {{formData?.refundStatusLabel}} | ||||||
|  |     </se> | ||||||
|  |     <se label="提现金额"> | ||||||
|  |       {{formData?.amount | currency}} | ||||||
|  |     </se> | ||||||
|  |     <se label="银行流水号"> | ||||||
|  |       {{formData?.bankSerialNumber}} | ||||||
|  |     </se> | ||||||
|  |     <se label="提现至银行卡"> | ||||||
|  |       {{formData?.bankCardNumber}} | ||||||
|  |     </se> | ||||||
|  |     <se label="银行回单" col="1"> | ||||||
|  |       <a (click)="downBack()">{{formData?.refundStatus==='3'?'下载回单':'暂无回单'}}</a> | ||||||
|  |     </se> | ||||||
|  |   </div> | ||||||
|  |  | ||||||
|  |   <nz-alert nzType="info" nzMessage="提现进度" class="mb-md mt-md"></nz-alert> | ||||||
|  |   <div nz-row class="mt-xl"> | ||||||
|  |     <div nz-col nzSpan="12" nzOffset="1"> | ||||||
|  |       <app-logistics-time-line [data]="timeLineData"></app-logistics-time-line> | ||||||
|     </div> |     </div> | ||||||
| </nz-card> |   </div> | ||||||
|  | </nz-card> | ||||||
|  | |||||||
| @ -4,11 +4,11 @@ import { FreightAccountService } from 'src/app/routes/financial-management/servi | |||||||
|  |  | ||||||
|  |  | ||||||
| @Component({ | @Component({ | ||||||
|   selector: 'app-withdrawals-detail', |   selector: 'app-partner-account-management-withdrawals-detail', | ||||||
|   templateUrl: './withdrawals-detail.component.html', |   templateUrl: './withdrawals-detail.component.html', | ||||||
|   styleUrls: ['./withdrawals-detail.component.less'] |   styleUrls: ['./withdrawals-detail.component.less'] | ||||||
| }) | }) | ||||||
| export class PartnerAccountManagementWithdrawalsDetailComponent implements OnInit { | export class PartnerAccountManagementWithdralDetailComponent implements OnInit { | ||||||
|   formData: any = {}; |   formData: any = {}; | ||||||
|  |  | ||||||
|   timeLineData: any = []; |   timeLineData: any = []; | ||||||
|  | |||||||
| @ -1,3 +1,4 @@ | |||||||
|  | <page-header-wrapper [title]="''"></page-header-wrapper> | ||||||
| <nz-card class="search-box" nzBordered> | <nz-card class="search-box" nzBordered> | ||||||
|   <div nz-row nzGutter="8"> |   <div nz-row nzGutter="8"> | ||||||
|     <div nz-col [nzXl]="_$expand ? 24 : 18" [nzLg]="24" [nzSm]="24" [nzXs]="24"> |     <div nz-col [nzXl]="_$expand ? 24 : 18" [nzLg]="24" [nzSm]="24" [nzXs]="24"> | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| import { Component, OnInit, ViewChild } from '@angular/core'; | import { Component, OnInit, ViewChild } from '@angular/core'; | ||||||
| import { Router } from '@angular/router'; | import { ActivatedRoute, Router } from '@angular/router'; | ||||||
| import { STComponent, STColumn, STChange, STRequestOptions, STData } from '@delon/abc/st'; | import { STComponent, STColumn, STChange, STRequestOptions, STData } from '@delon/abc/st'; | ||||||
| import { SFComponent, SFSchema, SFDateWidgetSchema } from '@delon/form'; | import { SFComponent, SFSchema, SFDateWidgetSchema } from '@delon/form'; | ||||||
| import { NzModalService } from 'ng-zorro-antd/modal'; | import { NzModalService } from 'ng-zorro-antd/modal'; | ||||||
| @ -27,7 +27,7 @@ export class PartnerAccountManagementWithdrawalsRecordComponent implements OnIni | |||||||
|   refundStatus: any = ''; |   refundStatus: any = ''; | ||||||
|  |  | ||||||
|   msg = ''; |   msg = ''; | ||||||
|   constructor(public service: FreightAccountService, private nzModalService: NzModalService, private router: Router) { } |   constructor(public service: FreightAccountService, private nzModalService: NzModalService, private router: Router, public ar: ActivatedRoute) { } | ||||||
|  |  | ||||||
|   ngOnInit(): void { } |   ngOnInit(): void { } | ||||||
|  |  | ||||||
| @ -325,7 +325,7 @@ export class PartnerAccountManagementWithdrawalsRecordComponent implements OnIni | |||||||
|           }, |           }, | ||||||
|           { |           { | ||||||
|             text: '详情', |             text: '详情', | ||||||
|             click: item => this.router.navigate(['/financial-management/withdrawals-record/detail/' + item.id]) |             click: item => this.router.navigate(['./detail/' + item.id], { relativeTo: this.ar }) | ||||||
|           } |           } | ||||||
|         ] |         ] | ||||||
|       } |       } | ||||||
|  | |||||||
| @ -0,0 +1,87 @@ | |||||||
|  | <page-header-wrapper [title]="'新增企业合伙人'"></page-header-wrapper> | ||||||
|  | <nz-card> | ||||||
|  |   <sf #sf [ui]="ui" [schema]="schema" [button]="'none'"> | ||||||
|  |     <!-- 企业基本信 --> | ||||||
|  |     <ng-template sf-template="_basicInfoTitle" let-me let-ui="ui" let-schema="schema"> | ||||||
|  |       <div class="form-title">企业基本信息</div> | ||||||
|  |     </ng-template> | ||||||
|  |     <ng-template sf-template="_licenseTips" let-me let-ui="ui" let-schema="schema"> | ||||||
|  |       <div class="pr"> | ||||||
|  |         请上传营业执照原件的高清照片,若上传复印件,则需加盖公司印章; | ||||||
|  |         <div>上传后系统会自动识别并填写</div> | ||||||
|  |       </div> | ||||||
|  |     </ng-template> | ||||||
|  |     <ng-template sf-template="unit" let-me let-ui="ui" let-schema="schema"> | ||||||
|  |       <div class="pr">万元</div> | ||||||
|  |     </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> | ||||||
|  |     <ng-template sf-template="legalPersonIdentityDTO/_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"> | ||||||
|  |       <div class="pr"> | ||||||
|  |         <dl class="tips"> | ||||||
|  |           <dt>正面照(人像面)</dt> | ||||||
|  |           <dd>示例</dd> | ||||||
|  |         </dl> | ||||||
|  |         <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"> | ||||||
|  |       <div class="pr"> | ||||||
|  |         <dl class="tips"> | ||||||
|  |           <dt>背面照(国徽面)</dt> | ||||||
|  |           <dd>示例</dd> | ||||||
|  |         </dl> | ||||||
|  |         <div class="pa"><img width="190" src="./assets/images/usercenter/certificate-demo-back.png" /></div> | ||||||
|  |       </div> | ||||||
|  |     </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> | ||||||
|  |     <ng-template sf-template="adminUserInfo/_adminCertificatePhotoTipsA" let-me let-ui="ui" let-schema="schema"> | ||||||
|  |       <div class="pr"> | ||||||
|  |         <dl class="tips"> | ||||||
|  |           <dt>正面照(人像面)</dt> | ||||||
|  |           <dd>示例</dd> | ||||||
|  |         </dl> | ||||||
|  |         <div class="pa"><img width="190" src="./assets/images/usercenter/certificate-demo-front.png" /></div> | ||||||
|  |       </div> | ||||||
|  |     </ng-template> | ||||||
|  |     <ng-template sf-template="adminUserInfo/_adminCertificatePhotoTipsB" let-me let-ui="ui" let-schema="schema"> | ||||||
|  |       <div class="pr"> | ||||||
|  |         <dl class="tips"> | ||||||
|  |           <dt>背面照(国徽面)</dt> | ||||||
|  |           <dd>示例</dd> | ||||||
|  |         </dl> | ||||||
|  |         <div class="pa"><img width="190" src="./assets/images/usercenter/certificate-demo-back.png" /></div> | ||||||
|  |       </div> | ||||||
|  |     </ng-template> | ||||||
|  |  | ||||||
|  |     <!-- 所属城市 --> | ||||||
|  |     <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> | ||||||
|  |     </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> | ||||||
|  |     </ng-template> | ||||||
|  |   </sf> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   <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> | ||||||
| @ -0,0 +1,68 @@ | |||||||
|  | :host { | ||||||
|  |     ::ng-deep { | ||||||
|  |       nz-card { | ||||||
|  |    | ||||||
|  |         .pr { | ||||||
|  |           position: relative; | ||||||
|  |         } | ||||||
|  |    | ||||||
|  |         .pa { | ||||||
|  |           position: absolute; | ||||||
|  |           top     : 50px; | ||||||
|  |           left    : 150px; | ||||||
|  |         } | ||||||
|  |    | ||||||
|  |         .tips { | ||||||
|  |           display      : flex; | ||||||
|  |           margin-bottom: 0; | ||||||
|  |           color        : #333; | ||||||
|  |    | ||||||
|  |           dt { | ||||||
|  |             width: 150px; | ||||||
|  |           } | ||||||
|  |    | ||||||
|  |           dd { | ||||||
|  |             width        : 190px; | ||||||
|  |             margin-bottom: 0; | ||||||
|  |             text-align   : center; | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |    | ||||||
|  |         .form-title { | ||||||
|  |           margin-bottom: 10px; | ||||||
|  |           padding-left : 8px; | ||||||
|  |           color        : #333; | ||||||
|  |           font-weight  : 700; | ||||||
|  |           font-size    : 18px; | ||||||
|  |           line-height  : 20px; | ||||||
|  |           border-left  : solid 3px #1890ff; | ||||||
|  |         } | ||||||
|  |    | ||||||
|  |       } | ||||||
|  |    | ||||||
|  |       .ant-form-item { | ||||||
|  |         margin-left: 180px; | ||||||
|  |       } | ||||||
|  |    | ||||||
|  |       nz-date-picker, | ||||||
|  |       nz-input-number { | ||||||
|  |         width: 100% !important; | ||||||
|  |       } | ||||||
|  |    | ||||||
|  |       .input-back { | ||||||
|  |         nz-form-item { | ||||||
|  |           margin-left: 0px; | ||||||
|  |    | ||||||
|  |           .ant-form-item-label { | ||||||
|  |             flex: 0 !important; | ||||||
|  |           } | ||||||
|  |    | ||||||
|  |           .ant-form-item-control { | ||||||
|  |             max-width  : 100% !important; | ||||||
|  |             margin-left: 20px !important; | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |    | ||||||
|  |     } | ||||||
|  |   } | ||||||
| @ -0,0 +1,592 @@ | |||||||
|  | import { Component, OnInit, ViewChild } from '@angular/core'; | ||||||
|  | import { Router } from '@angular/router'; | ||||||
|  | import { apiConf } from '@conf/api.conf'; | ||||||
|  | import { | ||||||
|  |   SFUploadWidgetSchema, | ||||||
|  |   SFComponent, | ||||||
|  |   SFSchema, | ||||||
|  |   SFUISchema, | ||||||
|  |   SFCascaderWidgetSchema, | ||||||
|  |   SFTextareaWidgetSchema, | ||||||
|  |   SFDateWidgetSchema, | ||||||
|  |   SFCheckboxWidgetSchema, | ||||||
|  |   SFTreeSelectWidgetSchema | ||||||
|  | } from '@delon/form'; | ||||||
|  | import { NzUploadFile } from 'ng-zorro-antd/upload'; | ||||||
|  | import { of } from 'rxjs'; | ||||||
|  | import { PartnerListService } from '../../services/partner-list.service'; | ||||||
|  |  | ||||||
|  | const IMAGECONFIG = { | ||||||
|  |   previewFile: (file: NzUploadFile) => of(file.url), | ||||||
|  |   action: apiConf.waterFileUpload, | ||||||
|  |   fileType: 'image/png,image/jpeg,image/jpg,image/gif', | ||||||
|  |   fileSize: 5120, | ||||||
|  |   limit: 1, | ||||||
|  |   limitFileCount: 1, | ||||||
|  |   resReName: 'data.fullFileWatermarkPath', | ||||||
|  |   urlReName: 'data.fullFileWatermarkPath', | ||||||
|  |   widget: 'upload', | ||||||
|  |   name: 'multipartFile', | ||||||
|  |   multiple: false, | ||||||
|  |   listType: 'picture-card' | ||||||
|  | } as SFUploadWidgetSchema; | ||||||
|  |  | ||||||
|  | const DATECONFIG = { | ||||||
|  |   grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, | ||||||
|  |   widget: 'date', | ||||||
|  |   format: 'yyyy-MM-dd', | ||||||
|  |   placeholder: '请选择' | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | @Component({ | ||||||
|  |   selector: 'app-add-etp-partner', | ||||||
|  |   templateUrl: './add-etp-partner.component.html', | ||||||
|  |   styleUrls: ['./add-etp-partner.component.less'] | ||||||
|  | }) | ||||||
|  | export class AddEtpPartnerComponent implements OnInit { | ||||||
|  |   @ViewChild('sf', { static: false }) | ||||||
|  |   sf!: SFComponent; | ||||||
|  |   schema: SFSchema = this.initBasicInfoSF(); | ||||||
|  |   ui: SFUISchema = { | ||||||
|  |     '*': { | ||||||
|  |       spanLabelFixed: 180, | ||||||
|  |       grid: { span: 24 } | ||||||
|  |     }, | ||||||
|  |     $_basicInfoTitle: { | ||||||
|  |       spanLabelFixed: 0 | ||||||
|  |     }, | ||||||
|  |     $_legalPersontitle: { | ||||||
|  |       spanLabelFixed: 0 | ||||||
|  |     }, | ||||||
|  |     $_isLoingDate: { | ||||||
|  |       spanLabelFixed: 100, | ||||||
|  |       grid: { xxl: 6, xl: 6, lg: 4, md: 6 } | ||||||
|  |     } | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   constructor(private router: Router, public service: PartnerListService) {} | ||||||
|  |   ngOnInit() {} | ||||||
|  |  | ||||||
|  |   submitForm() { | ||||||
|  |     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('营业期限不能小于成立日期'); | ||||||
|  |       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 (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 | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     ); | ||||||
|  |     // this.service.request(this.service.$api_save_enterprise_admin, params).subscribe(res => { | ||||||
|  |     //   if (res) { | ||||||
|  |     //     this.service.msgSrv.success('企业新增成功'); | ||||||
|  |     //     this.goBack(); | ||||||
|  |     //   } | ||||||
|  |     // }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /* | ||||||
|  |    * 根据地区code查询地区列表 | ||||||
|  |    */ | ||||||
|  |   getRegionDetailByCode(regionCode: any) { | ||||||
|  |     return this.service.request(this.service.$api_get_region_by_code, { regionCode }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   // 识别身份证 参数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.sf.setValue('/legalPersonIdentityDTO/name', res.name); | ||||||
|  |             } | ||||||
|  |             if (res.number) { | ||||||
|  |               this.sf.setValue('/legalPersonIdentityDTO/certificateType', 0); | ||||||
|  |               this.sf.setValue('/legalPersonIdentityDTO/certificateNumber', res.number); | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |           if (isFront === 'back') { | ||||||
|  |             // 背面 | ||||||
|  |             if (res.validFrom) { | ||||||
|  |               this.sf.setValue('/legalPersonIdentityDTO/validStartTime', res.validFrom); | ||||||
|  |             } | ||||||
|  |             if (res.validTo) { | ||||||
|  |               this.sf.setValue('/legalPersonIdentityDTO/validEndTime', res.validTo); | ||||||
|  |               this.sf.setValue('/legalPersonIdentityDTO/_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); | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   // 识别营业执照 | ||||||
|  |   checkBusinessLicense(imgurl: any) { | ||||||
|  |     this.service.request(this.service.$api_ocr_recognize_business_license, { businessLicenseUrl: imgurl }).subscribe(res => { | ||||||
|  |       if (res) { | ||||||
|  |         if (res.registrationNumber) { | ||||||
|  |           this.sf.setValue('/unifiedSocialCreditCode', res.registrationNumber); | ||||||
|  |         } | ||||||
|  |         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); | ||||||
|  |         } else { | ||||||
|  |           this.sf.setValue('/_isLoingDate', true); | ||||||
|  |         } | ||||||
|  |         if (res.businessScope) { | ||||||
|  |           this.sf.setValue('/businessScope', res.businessScope); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   goBack() { | ||||||
|  |     window.history.go(-1); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   private initBasicInfoSF(): SFSchema { | ||||||
|  |     return { | ||||||
|  |       properties: { | ||||||
|  |         // 企业基本信息 | ||||||
|  |         _basicInfoTitle: { title: '', type: 'string', ui: { widget: 'custom' } }, | ||||||
|  |         _licenseTips: { title: '营业执照', type: 'string', ui: { widget: 'custom' }, default: true }, | ||||||
|  |         licensePhoto: { title: '', type: 'string', ui: { hidden: true } }, | ||||||
|  |         licensePhotoWatermark: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '', | ||||||
|  |           ui: { | ||||||
|  |             ...IMAGECONFIG, | ||||||
|  |             descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过5M', | ||||||
|  |             change: args => { | ||||||
|  |               if (args.type === 'success') { | ||||||
|  |                 this.sf.setValue('/licensePhoto', args.fileList[0].response.data.fullFilePath); | ||||||
|  |                 this.checkBusinessLicense(args.fileList[0].response.data.fullFilePath); | ||||||
|  |               } | ||||||
|  |             } | ||||||
|  |           } as SFUploadWidgetSchema | ||||||
|  |         }, | ||||||
|  |         unifiedSocialCreditCode: { | ||||||
|  |           title: '统一社会信用代码', | ||||||
|  |           type: 'string', | ||||||
|  |           minLength: 1, | ||||||
|  |           maxLength: 30, | ||||||
|  |           ui: { | ||||||
|  |             grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, | ||||||
|  |             optionalHelp: | ||||||
|  |               '为了企业用户的使用体验,若公司代码即统一社会信用代码已在本应用其他关联平台注册,则此处填写的公司资料将同步更新至对应已注册的平台', | ||||||
|  |             placeholder: '请输入营业执照上的统一社会信用代码', | ||||||
|  |             errors: { | ||||||
|  |               required: '请输入18位公司代码' | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         enterpriseName: { | ||||||
|  |           title: '公司名称', | ||||||
|  |           type: 'string', | ||||||
|  |           minLength: 1, | ||||||
|  |           maxLength: 100, | ||||||
|  |           ui: { | ||||||
|  |             grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, | ||||||
|  |             placeholder: '请输入营业执照上的统一社会信用代码', | ||||||
|  |             errors: { | ||||||
|  |               required: '请输入公司名称' | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         operatingStartTime: { | ||||||
|  |           title: '营业期限', | ||||||
|  |           type: 'string', | ||||||
|  |           ui: { | ||||||
|  |             ...DATECONFIG, | ||||||
|  |             grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, | ||||||
|  |             errors: { | ||||||
|  |               required: '请选择开始日期' | ||||||
|  |             } | ||||||
|  |           } as SFDateWidgetSchema | ||||||
|  |         }, | ||||||
|  |         operatingEndTime: { | ||||||
|  |           title: '', | ||||||
|  |           type: 'string', | ||||||
|  |           ui: { | ||||||
|  |             ...DATECONFIG, | ||||||
|  |             grid: { xxl: 13, xl: 18, lg: 20, md: 18 }, | ||||||
|  |             errors: { | ||||||
|  |               required: '请选择截止日期' | ||||||
|  |             }, | ||||||
|  |             change: i => { | ||||||
|  |               this.sf?.setValue('/_isLoingDate', false); | ||||||
|  |             } | ||||||
|  |           } as SFDateWidgetSchema | ||||||
|  |         }, | ||||||
|  |         _isLoingDate: { | ||||||
|  |           title: '长期', | ||||||
|  |           type: 'boolean', | ||||||
|  |           ui: { | ||||||
|  |             class: 'input-back', | ||||||
|  |             widget: 'checkbox', | ||||||
|  |             change: i => this.sf?.setValue('/operatingEndTime', null) | ||||||
|  |           } as SFCheckboxWidgetSchema | ||||||
|  |         }, | ||||||
|  |  | ||||||
|  |         // 法人信息 | ||||||
|  |         legalPersonIdentityDTO: { | ||||||
|  |           type: 'object', | ||||||
|  |           properties: { | ||||||
|  |             _legalPersontitle: { title: '', type: 'string', ui: { widget: 'custom' } }, | ||||||
|  |             _certificatePhototips: { title: '法定代表人证件照', type: 'string', ui: { widget: 'custom' }, default: true }, | ||||||
|  |             _certificatePhotoExmplateA: { title: '', type: 'string', ui: { widget: 'custom', offsetControl: 6 } }, | ||||||
|  |             certificatePhotoFrontWatermark: { | ||||||
|  |               type: 'string', | ||||||
|  |               title: '', | ||||||
|  |               ui: { | ||||||
|  |                 ...IMAGECONFIG, | ||||||
|  |                 descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过5M', | ||||||
|  |                 change: args => { | ||||||
|  |                   if (args.type === 'success') { | ||||||
|  |                     this.sf.setValue('/legalPersonIdentityDTO/certificatePhotoFront', args.fileList[0].response.data.fullFilePath); | ||||||
|  |                     this.checkIdCard(args.fileList[0].response.data.fullFilePath, 'front', 1); | ||||||
|  |                   } | ||||||
|  |                 } | ||||||
|  |               } as SFUploadWidgetSchema | ||||||
|  |             }, | ||||||
|  |             _certificatePhotoExmplateB: { title: '', type: 'string', ui: { widget: 'custom', offsetControl: 6 } }, | ||||||
|  |             certificatePhotoFront: { title: '', type: 'string', ui: { hidden: true } }, | ||||||
|  |             certificatePhotoBack: { title: '', type: 'string', ui: { hidden: true } }, | ||||||
|  |             certificatePhotoBackWatermark: { | ||||||
|  |               type: 'string', | ||||||
|  |               title: '', | ||||||
|  |               ui: { | ||||||
|  |                 ...IMAGECONFIG, | ||||||
|  |                 descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过5M', | ||||||
|  |                 change: args => { | ||||||
|  |                   if (args.type === 'success') { | ||||||
|  |                     this.sf.setValue('/legalPersonIdentityDTO/certificatePhotoBack', args.fileList[0].response.data.fullFilePath); | ||||||
|  |                     this.checkIdCard(args.fileList[0].response.data.fullFilePath, 'back', 1); | ||||||
|  |                   } | ||||||
|  |                 } | ||||||
|  |               } as SFUploadWidgetSchema | ||||||
|  |             }, | ||||||
|  |             name: { | ||||||
|  |               title: '法人代表姓名', | ||||||
|  |               type: 'string', | ||||||
|  |               maxLength: 8, | ||||||
|  |               ui: { | ||||||
|  |                 grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, | ||||||
|  |                 placeholder: '请输入营业执照上的法人姓名' | ||||||
|  |               } | ||||||
|  |             }, | ||||||
|  |             certificateType: { | ||||||
|  |               type: 'string', | ||||||
|  |               title: '法人证件类型', | ||||||
|  |               enum: [ | ||||||
|  |                 { label: '大陆身份证', value: 0 }, | ||||||
|  |                 { label: '港澳居民通行证', value: 1 }, | ||||||
|  |                 { label: '香港居民通行证', value: 2 } | ||||||
|  |               ], | ||||||
|  |               default: 0, | ||||||
|  |               ui: { | ||||||
|  |                 grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, | ||||||
|  |                 widget: 'select' | ||||||
|  |               } | ||||||
|  |             }, | ||||||
|  |             certificateNumber: { | ||||||
|  |               title: ' 法定代表人证件号', | ||||||
|  |               type: 'string', | ||||||
|  |               format: 'id-card', | ||||||
|  |               minLength: 1, | ||||||
|  |               maxLength: 18, | ||||||
|  |               ui: { | ||||||
|  |                 grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, | ||||||
|  |                 placeholder: '请输入法定代表人证件号' | ||||||
|  |               } | ||||||
|  |             }, | ||||||
|  |             validStartTime: { | ||||||
|  |               title: '法人证件有效开始日期', | ||||||
|  |               type: 'string', | ||||||
|  |               ui: { | ||||||
|  |                 grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, | ||||||
|  |                 widget: 'date', | ||||||
|  |                 format: 'yyyy-MM-dd', | ||||||
|  |                 placeholder: '请选择', | ||||||
|  |                 errors: { | ||||||
|  |                   required: '请选择开始日期' | ||||||
|  |                 } | ||||||
|  |               } as SFDateWidgetSchema | ||||||
|  |             }, | ||||||
|  |             validEndTime: { | ||||||
|  |               title: '法人证件有效截止日期', | ||||||
|  |               type: 'string', | ||||||
|  |               ui: { | ||||||
|  |                 grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, | ||||||
|  |                 widget: 'date', | ||||||
|  |                 format: 'yyyy-MM-dd', | ||||||
|  |                 placeholder: '请选择', | ||||||
|  |                 errors: { | ||||||
|  |                   required: '请选择截止日期' | ||||||
|  |                 }, | ||||||
|  |                 change: i => { | ||||||
|  |                   this.sf?.setValue('/legalPersonIdentityDTO/_isLoingDate', false); | ||||||
|  |                 } | ||||||
|  |               } as SFDateWidgetSchema | ||||||
|  |             }, | ||||||
|  |             _isLoingDate: { | ||||||
|  |               title: '长期', | ||||||
|  |               type: 'boolean', | ||||||
|  |               ui: { | ||||||
|  |                 spanLabelFixed: 100, | ||||||
|  |                 grid: { span: 6 }, | ||||||
|  |                 class: 'input-back', | ||||||
|  |                 widget: 'checkbox', | ||||||
|  |                 change: i => this.sf?.setValue('/legalPersonIdentityDTO/validEndTime', null) | ||||||
|  |               } as SFCheckboxWidgetSchema | ||||||
|  |             } | ||||||
|  |           }, | ||||||
|  |           required: [ | ||||||
|  |             '_certificatePhototips', | ||||||
|  |             'certificatePhotoFront', | ||||||
|  |             'certificatePhotoBack', | ||||||
|  |             'name', | ||||||
|  |             'certificateType', | ||||||
|  |             'certificateNumber', | ||||||
|  |             'validStartTime' | ||||||
|  |           ] | ||||||
|  |         }, | ||||||
|  |         // 企业管理员信息 | ||||||
|  |         adminUserInfo: { | ||||||
|  |           type: 'object', | ||||||
|  |           properties: { | ||||||
|  |             _adminTitle: { title: '', type: 'string', ui: { widget: 'custom' } }, | ||||||
|  |             adminMobile: { | ||||||
|  |               title: ' 企业管理员手机号', | ||||||
|  |               type: 'string', | ||||||
|  |               minLength: 1, | ||||||
|  |               format: 'mobile', | ||||||
|  |               maxLength: 11, | ||||||
|  |               ui: { | ||||||
|  |                 grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, | ||||||
|  |                 placeholder: '请输入企业管理员手机号', | ||||||
|  |                 errors: { required: '请输入企业管理员手机号', format: '手机号格式错误' } | ||||||
|  |               } | ||||||
|  |             }, | ||||||
|  |             _adminCertificatePhotoTipsA: { | ||||||
|  |               title: '企业管理员证件照', | ||||||
|  |               type: 'string', | ||||||
|  |               ui: { | ||||||
|  |                 widget: 'custom' | ||||||
|  |               }, | ||||||
|  |               default: true | ||||||
|  |             }, | ||||||
|  |             certificatePhotoFront: { title: '', type: 'string', ui: { hidden: true } }, | ||||||
|  |             certificatePhotoBack: { title: '', type: 'string', ui: { hidden: true } }, | ||||||
|  |             certificatePhotoFrontWatermark: { | ||||||
|  |               type: 'string', | ||||||
|  |               title: '', | ||||||
|  |               ui: { | ||||||
|  |                 ...IMAGECONFIG, | ||||||
|  |                 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); | ||||||
|  |                   } | ||||||
|  |                 } | ||||||
|  |               } as SFUploadWidgetSchema | ||||||
|  |             }, | ||||||
|  |             _adminCertificatePhotoTipsB: { | ||||||
|  |               title: '', | ||||||
|  |               type: 'string', | ||||||
|  |               ui: { | ||||||
|  |                 widget: 'custom', | ||||||
|  |                 offsetControl: 6 | ||||||
|  |               } | ||||||
|  |             }, | ||||||
|  |             certificatePhotoBackWatermark: { | ||||||
|  |               type: 'string', | ||||||
|  |               title: '', | ||||||
|  |               ui: { | ||||||
|  |                 ...IMAGECONFIG, | ||||||
|  |                 descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过5M', | ||||||
|  |                 change: args => { | ||||||
|  |                   if (args.type === 'success') { | ||||||
|  |                     this.sf.setValue('/certificatePhotoBack', args.fileList[0].response.data.fullFilePath); | ||||||
|  |                   } | ||||||
|  |                 } | ||||||
|  |               } as SFUploadWidgetSchema | ||||||
|  |             }, | ||||||
|  |             name: { | ||||||
|  |               title: '企业管理员姓名', | ||||||
|  |               type: 'string', | ||||||
|  |               maxLength: 8, | ||||||
|  |               ui: { | ||||||
|  |                 grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, | ||||||
|  |                 placeholder: '请输入企业管理员姓名' | ||||||
|  |               } | ||||||
|  |             }, | ||||||
|  |             certificateNumber: { | ||||||
|  |               title: '企业管理员身份证号', | ||||||
|  |               type: 'string', | ||||||
|  |               format: 'id-card', | ||||||
|  |               minLength: 1, | ||||||
|  |               maxLength: 18, | ||||||
|  |               ui: { | ||||||
|  |                 grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, | ||||||
|  |                 placeholder: '请输入企业管理员身份证号' | ||||||
|  |               } | ||||||
|  |             }, | ||||||
|  |             operatingStartTime: { | ||||||
|  |               title: '身份证有效开始日期', | ||||||
|  |               type: 'string', | ||||||
|  |               ui: { | ||||||
|  |                 ...DATECONFIG, | ||||||
|  |                 grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, | ||||||
|  |                 errors: { | ||||||
|  |                   required: '请选择开始日期' | ||||||
|  |                 } | ||||||
|  |               } as SFDateWidgetSchema | ||||||
|  |             }, | ||||||
|  |             operatingEndTime: { | ||||||
|  |               title: '身份证有效截止日期', | ||||||
|  |               type: 'string', | ||||||
|  |               ui: { | ||||||
|  |                 ...DATECONFIG, | ||||||
|  |                 grid: { xxl: 13, xl: 18, lg: 20, md: 18 }, | ||||||
|  |                 errors: { | ||||||
|  |                   required: '请选择截止日期' | ||||||
|  |                 }, | ||||||
|  |                 change: i => { | ||||||
|  |                   this.sf?.setValue('/adminUserInfo/_isLoingDate', false); | ||||||
|  |                 } | ||||||
|  |               } as SFDateWidgetSchema | ||||||
|  |             }, | ||||||
|  |             _isLoingDate: { | ||||||
|  |               title: '长期', | ||||||
|  |               type: 'boolean', | ||||||
|  |               ui: { | ||||||
|  |                 spanLabelFixed: 100, | ||||||
|  |                 grid: { span: 6 }, | ||||||
|  |                 class: 'input-back', | ||||||
|  |                 widget: 'checkbox', | ||||||
|  |                 change: i => this.sf?.setValue('/adminUserInfo/operatingEndTime', null) | ||||||
|  |               } as SFCheckboxWidgetSchema | ||||||
|  |             } | ||||||
|  |           }, | ||||||
|  |           required: ['_adminCertificatePhotoTipsA', 'adminMobile', 'name', 'certificateNumber','operatingStartTime'] | ||||||
|  |         }, | ||||||
|  |         // 所属城市 | ||||||
|  |         _addressTitle: { title: '', type: 'string', ui: { widget: 'custom' } }, | ||||||
|  |         status3: { | ||||||
|  |           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, | ||||||
|  |             asyncData: () => | ||||||
|  |               of([ | ||||||
|  |                 { title: '待支付', key: 'WAIT_BUYER_PAY' }, | ||||||
|  |                 { title: '已支付', key: 'TRADE_SUCCESS' }, | ||||||
|  |                 { title: '交易完成', key: 'TRADE_FINISHED' } | ||||||
|  |               ]) | ||||||
|  |           } as SFTreeSelectWidgetSchema, | ||||||
|  |         }, | ||||||
|  |         // 渠道销售 | ||||||
|  |         _channelTitle: { title: '', type: 'string', ui: { widget: 'custom' } }, | ||||||
|  |         channel: { | ||||||
|  |           title: '渠道销售邀请码', | ||||||
|  |           type: 'string', | ||||||
|  |           minLength: 1, | ||||||
|  |           maxLength: 100, | ||||||
|  |           ui: { | ||||||
|  |             grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, | ||||||
|  |             placeholder: '请输入渠道销售邀请码', | ||||||
|  |             errors: { | ||||||
|  |               required: '请输入渠道销售邀请码' | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       }, | ||||||
|  |       required: ['_licenseTips', 'licensePhotoWatermark', 'unifiedSocialCreditCode', 'enterpriseName', 'operatingStartTime', 'status3','channel'] | ||||||
|  |     }; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,44 @@ | |||||||
|  | <page-header-wrapper [title]="'新增个人合伙人'"></page-header-wrapper> | ||||||
|  | <nz-card> | ||||||
|  |     <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> | ||||||
|  |         </ng-template> | ||||||
|  |         <ng-template sf-template="adminUserInfo/_adminCertificatePhotoTipsA" let-me let-ui="ui" let-schema="schema"> | ||||||
|  |             <div class="pr"> | ||||||
|  |                 <dl class="tips"> | ||||||
|  |                     <dt>正面照(人像面)</dt> | ||||||
|  |                     <dd>示例</dd> | ||||||
|  |                 </dl> | ||||||
|  |                 <div class="pa"><img width="190" src="./assets/images/usercenter/certificate-demo-front.png" /></div> | ||||||
|  |             </div> | ||||||
|  |         </ng-template> | ||||||
|  |         <ng-template sf-template="adminUserInfo/_adminCertificatePhotoTipsB" let-me let-ui="ui" let-schema="schema"> | ||||||
|  |             <div class="pr"> | ||||||
|  |                 <dl class="tips"> | ||||||
|  |                     <dt>背面照(国徽面)</dt> | ||||||
|  |                     <dd>示例</dd> | ||||||
|  |                 </dl> | ||||||
|  |                 <div class="pa"><img width="190" src="./assets/images/usercenter/certificate-demo-back.png" /></div> | ||||||
|  |             </div> | ||||||
|  |         </ng-template> | ||||||
|  |  | ||||||
|  |         <!-- 所属城市 --> | ||||||
|  |         <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> | ||||||
|  |         </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> | ||||||
|  |         </ng-template> | ||||||
|  |     </sf> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     <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> | ||||||
| @ -0,0 +1,68 @@ | |||||||
|  | :host { | ||||||
|  |     ::ng-deep { | ||||||
|  |       nz-card { | ||||||
|  |    | ||||||
|  |         .pr { | ||||||
|  |           position: relative; | ||||||
|  |         } | ||||||
|  |    | ||||||
|  |         .pa { | ||||||
|  |           position: absolute; | ||||||
|  |           top     : 50px; | ||||||
|  |           left    : 150px; | ||||||
|  |         } | ||||||
|  |    | ||||||
|  |         .tips { | ||||||
|  |           display      : flex; | ||||||
|  |           margin-bottom: 0; | ||||||
|  |           color        : #333; | ||||||
|  |    | ||||||
|  |           dt { | ||||||
|  |             width: 150px; | ||||||
|  |           } | ||||||
|  |    | ||||||
|  |           dd { | ||||||
|  |             width        : 190px; | ||||||
|  |             margin-bottom: 0; | ||||||
|  |             text-align   : center; | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |    | ||||||
|  |         .form-title { | ||||||
|  |           margin-bottom: 10px; | ||||||
|  |           padding-left : 8px; | ||||||
|  |           color        : #333; | ||||||
|  |           font-weight  : 700; | ||||||
|  |           font-size    : 18px; | ||||||
|  |           line-height  : 20px; | ||||||
|  |           border-left  : solid 3px #1890ff; | ||||||
|  |         } | ||||||
|  |    | ||||||
|  |       } | ||||||
|  |    | ||||||
|  |       .ant-form-item { | ||||||
|  |         margin-left: 180px; | ||||||
|  |       } | ||||||
|  |    | ||||||
|  |       nz-date-picker, | ||||||
|  |       nz-input-number { | ||||||
|  |         width: 100% !important; | ||||||
|  |       } | ||||||
|  |    | ||||||
|  |       .input-back { | ||||||
|  |         nz-form-item { | ||||||
|  |           margin-left: 0px; | ||||||
|  |    | ||||||
|  |           .ant-form-item-label { | ||||||
|  |             flex: 0 !important; | ||||||
|  |           } | ||||||
|  |    | ||||||
|  |           .ant-form-item-control { | ||||||
|  |             max-width  : 100% !important; | ||||||
|  |             margin-left: 20px !important; | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |    | ||||||
|  |     } | ||||||
|  |   } | ||||||
| @ -0,0 +1,344 @@ | |||||||
|  | import { Component, OnInit, 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 { NzUploadFile } from 'ng-zorro-antd/upload'; | ||||||
|  | import { of } from 'rxjs'; | ||||||
|  | import { PartnerListService } from '../../services/partner-list.service'; | ||||||
|  |  | ||||||
|  | const IMAGECONFIG = { | ||||||
|  |   previewFile: (file: NzUploadFile) => of(file.url), | ||||||
|  |   action: apiConf.waterFileUpload, | ||||||
|  |   fileType: 'image/png,image/jpeg,image/jpg,image/gif', | ||||||
|  |   fileSize: 5120, | ||||||
|  |   limit: 1, | ||||||
|  |   limitFileCount: 1, | ||||||
|  |   resReName: 'data.fullFileWatermarkPath', | ||||||
|  |   urlReName: 'data.fullFileWatermarkPath', | ||||||
|  |   widget: 'upload', | ||||||
|  |   name: 'multipartFile', | ||||||
|  |   multiple: false, | ||||||
|  |   listType: 'picture-card' | ||||||
|  | } as SFUploadWidgetSchema; | ||||||
|  |  | ||||||
|  | const DATECONFIG = { | ||||||
|  |   grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, | ||||||
|  |   widget: 'date', | ||||||
|  |   format: 'yyyy-MM-dd', | ||||||
|  |   placeholder: '请选择' | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | @Component({ | ||||||
|  |   selector: 'app-add-personal-partner', | ||||||
|  |   templateUrl: './add-personal-partner.component.html', | ||||||
|  |   styleUrls: ['./add-personal-partner.component.less'] | ||||||
|  | }) | ||||||
|  | export class AddPersonalPartnerComponent implements OnInit { | ||||||
|  |   @ViewChild('sf', { static: false }) | ||||||
|  |   sf!: SFComponent; | ||||||
|  |   schema: SFSchema = this.initBasicInfoSF(); | ||||||
|  |   ui: SFUISchema = { | ||||||
|  |     '*': { | ||||||
|  |       spanLabelFixed: 180, | ||||||
|  |       grid: { span: 24 } | ||||||
|  |     }, | ||||||
|  |     $_basicInfoTitle: { | ||||||
|  |       spanLabelFixed: 0 | ||||||
|  |     }, | ||||||
|  |     $_legalPersontitle: { | ||||||
|  |       spanLabelFixed: 0 | ||||||
|  |     }, | ||||||
|  |     $_isLoingDate: { | ||||||
|  |       spanLabelFixed: 100, | ||||||
|  |       grid: { xxl: 6, xl: 6, lg: 4, md: 6 } | ||||||
|  |     } | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   constructor(private router: Router, public service: PartnerListService) {} | ||||||
|  |   ngOnInit() {} | ||||||
|  |  | ||||||
|  |   submitForm() { | ||||||
|  |     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('营业期限不能小于成立日期'); | ||||||
|  |       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 (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 | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     ); | ||||||
|  |     // this.service.request(this.service.$api_save_enterprise_admin, params).subscribe(res => { | ||||||
|  |     //   if (res) { | ||||||
|  |     //     this.service.msgSrv.success('企业新增成功'); | ||||||
|  |     //     this.goBack(); | ||||||
|  |     //   } | ||||||
|  |     // }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /* | ||||||
|  |    * 根据地区code查询地区列表 | ||||||
|  |    */ | ||||||
|  |   getRegionDetailByCode(regionCode: any) { | ||||||
|  |     return this.service.request(this.service.$api_get_region_by_code, { regionCode }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   // 识别身份证 参数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.sf.setValue('/legalPersonIdentityDTO/name', res.name); | ||||||
|  |             } | ||||||
|  |             if (res.number) { | ||||||
|  |               this.sf.setValue('/legalPersonIdentityDTO/certificateType', 0); | ||||||
|  |               this.sf.setValue('/legalPersonIdentityDTO/certificateNumber', res.number); | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |           if (isFront === 'back') { | ||||||
|  |             // 背面 | ||||||
|  |             if (res.validFrom) { | ||||||
|  |               this.sf.setValue('/legalPersonIdentityDTO/validStartTime', res.validFrom); | ||||||
|  |             } | ||||||
|  |             if (res.validTo) { | ||||||
|  |               this.sf.setValue('/legalPersonIdentityDTO/validEndTime', res.validTo); | ||||||
|  |               this.sf.setValue('/legalPersonIdentityDTO/_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); | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   goBack() { | ||||||
|  |     window.history.go(-1); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   private initBasicInfoSF(): SFSchema { | ||||||
|  |     return { | ||||||
|  |       properties: { | ||||||
|  |         // 合伙人信息 | ||||||
|  |         adminUserInfo: { | ||||||
|  |           type: 'object', | ||||||
|  |           properties: { | ||||||
|  |             _adminTitle: { title: '', type: 'string', ui: { widget: 'custom' } }, | ||||||
|  |             adminMobile: { | ||||||
|  |               title: ' 手机号', | ||||||
|  |               type: 'string', | ||||||
|  |               minLength: 1, | ||||||
|  |               format: 'mobile', | ||||||
|  |               maxLength: 11, | ||||||
|  |               ui: { | ||||||
|  |                 grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, | ||||||
|  |                 placeholder: '请输入手机号', | ||||||
|  |                 errors: { required: '请输入手机号', format: '手机号格式错误' } | ||||||
|  |               } | ||||||
|  |             }, | ||||||
|  |             _adminCertificatePhotoTipsA: { | ||||||
|  |               title: '证件照', | ||||||
|  |               type: 'string', | ||||||
|  |               ui: { | ||||||
|  |                 widget: 'custom' | ||||||
|  |               }, | ||||||
|  |               default: true | ||||||
|  |             }, | ||||||
|  |             certificatePhotoFront: { title: '', type: 'string', ui: { hidden: true } }, | ||||||
|  |             certificatePhotoBack: { title: '', type: 'string', ui: { hidden: true } }, | ||||||
|  |             certificatePhotoFrontWatermark: { | ||||||
|  |               type: 'string', | ||||||
|  |               title: '', | ||||||
|  |               ui: { | ||||||
|  |                 ...IMAGECONFIG, | ||||||
|  |                 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); | ||||||
|  |                   } | ||||||
|  |                 } | ||||||
|  |               } as SFUploadWidgetSchema | ||||||
|  |             }, | ||||||
|  |             _adminCertificatePhotoTipsB: { | ||||||
|  |               title: '', | ||||||
|  |               type: 'string', | ||||||
|  |               ui: { | ||||||
|  |                 widget: 'custom', | ||||||
|  |                 offsetControl: 6 | ||||||
|  |               } | ||||||
|  |             }, | ||||||
|  |             certificatePhotoBackWatermark: { | ||||||
|  |               type: 'string', | ||||||
|  |               title: '', | ||||||
|  |               ui: { | ||||||
|  |                 ...IMAGECONFIG, | ||||||
|  |                 descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过5M', | ||||||
|  |                 change: args => { | ||||||
|  |                   if (args.type === 'success') { | ||||||
|  |                     this.sf.setValue('/certificatePhotoBack', args.fileList[0].response.data.fullFilePath); | ||||||
|  |                   } | ||||||
|  |                 } | ||||||
|  |               } as SFUploadWidgetSchema | ||||||
|  |             }, | ||||||
|  |             name: { | ||||||
|  |               title: '姓名', | ||||||
|  |               type: 'string', | ||||||
|  |               maxLength: 8, | ||||||
|  |               ui: { | ||||||
|  |                 grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, | ||||||
|  |                 placeholder: '请输入姓名' | ||||||
|  |               } | ||||||
|  |             }, | ||||||
|  |             certificateNumber: { | ||||||
|  |               title: '身份证号', | ||||||
|  |               type: 'string', | ||||||
|  |               format: 'id-card', | ||||||
|  |               minLength: 1, | ||||||
|  |               maxLength: 18, | ||||||
|  |               ui: { | ||||||
|  |                 grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, | ||||||
|  |                 placeholder: '请输入身份证号' | ||||||
|  |               } | ||||||
|  |             }, | ||||||
|  |             operatingStartTime: { | ||||||
|  |               title: '身份证有效开始日期', | ||||||
|  |               type: 'string', | ||||||
|  |               ui: { | ||||||
|  |                 ...DATECONFIG, | ||||||
|  |                 grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, | ||||||
|  |                 errors: { | ||||||
|  |                   required: '请选择开始日期' | ||||||
|  |                 } | ||||||
|  |               } as SFDateWidgetSchema | ||||||
|  |             }, | ||||||
|  |             operatingEndTime: { | ||||||
|  |               title: '身份证有效截止日期', | ||||||
|  |               type: 'string', | ||||||
|  |               ui: { | ||||||
|  |                 ...DATECONFIG, | ||||||
|  |                 grid: { xxl: 13, xl: 18, lg: 20, md: 18 }, | ||||||
|  |                 errors: { | ||||||
|  |                   required: '请选择截止日期' | ||||||
|  |                 }, | ||||||
|  |                 change: i => { | ||||||
|  |                   this.sf?.setValue('/adminUserInfo/_isLoingDate', false); | ||||||
|  |                 } | ||||||
|  |               } as SFDateWidgetSchema | ||||||
|  |             }, | ||||||
|  |             _isLoingDate: { | ||||||
|  |               title: '长期', | ||||||
|  |               type: 'boolean', | ||||||
|  |               ui: { | ||||||
|  |                 spanLabelFixed: 100, | ||||||
|  |                 grid: { span: 6 }, | ||||||
|  |                 class: 'input-back', | ||||||
|  |                 widget: 'checkbox', | ||||||
|  |                 change: i => this.sf?.setValue('/adminUserInfo/operatingEndTime', null) | ||||||
|  |               } as SFCheckboxWidgetSchema | ||||||
|  |             } | ||||||
|  |           }, | ||||||
|  |           required: ['_adminCertificatePhotoTipsA', 'adminMobile', 'name', 'certificateNumber', 'operatingStartTime'] | ||||||
|  |         }, | ||||||
|  |         // 所属城市 | ||||||
|  |         _addressTitle: { title: '', type: 'string', ui: { widget: 'custom' } }, | ||||||
|  |         status3: { | ||||||
|  |           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, | ||||||
|  |             asyncData: () => | ||||||
|  |               of([ | ||||||
|  |                 { title: '待支付', key: 'WAIT_BUYER_PAY' }, | ||||||
|  |                 { title: '已支付', key: 'TRADE_SUCCESS' }, | ||||||
|  |                 { title: '交易完成', key: 'TRADE_FINISHED' } | ||||||
|  |               ]) | ||||||
|  |           } as SFTreeSelectWidgetSchema | ||||||
|  |         }, | ||||||
|  |         // 渠道销售 | ||||||
|  |         _channelTitle: { title: '', type: 'string', ui: { widget: 'custom' } }, | ||||||
|  |         channel: { | ||||||
|  |           title: '渠道销售邀请码', | ||||||
|  |           type: 'string', | ||||||
|  |           minLength: 1, | ||||||
|  |           maxLength: 100, | ||||||
|  |           ui: { | ||||||
|  |             grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, | ||||||
|  |             placeholder: '请输入渠道销售邀请码', | ||||||
|  |             errors: { | ||||||
|  |               required: '请输入渠道销售邀请码' | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       }, | ||||||
|  |       required: [ | ||||||
|  |         'status3', | ||||||
|  |         'channel' | ||||||
|  |       ] | ||||||
|  |     }; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,95 @@ | |||||||
|  | <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> | ||||||
|  |         </div> | ||||||
|  |         <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()"> | ||||||
|  |                 {{ !_$expand ? '展开' : '收起' }} | ||||||
|  |                 <i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i> | ||||||
|  |             </button> | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
|  | </nz-card> | ||||||
|  |  | ||||||
|  | <nz-card class="content-box" nzBordered> | ||||||
|  |     <div class="d-flex align-items-center mb-md mt-md"> | ||||||
|  |         <button nz-button (click)="this.routeTo('/partner/partner-list/add-etp-partner')" nzType="primary">新增企业合伙人</button> | ||||||
|  |         <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> | ||||||
|  | </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="返佣模板" required> | ||||||
|  |                 <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> | ||||||
|  |             </se> | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
|  |     <p class="text-center mt-md">说明:修改模板后,当月开始返佣收益将会按新模板计算</p> | ||||||
|  | </ng-template> | ||||||
|  |  | ||||||
|  | <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="渠道销售修改为" required> | ||||||
|  |                 <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> | ||||||
|  |             </se> | ||||||
|  |             <se label="备注" required> | ||||||
|  |                 <textarea rows="3" nz-input></textarea> | ||||||
|  |             </se> | ||||||
|  |             <se label="一并转移的客户"> | ||||||
|  |                 <p style="margin-top: 8px;">已选(0)</p> | ||||||
|  |                 <nz-table #rowSelectionTable [nzData]="customers" nzSize="small" nzBordered> | ||||||
|  |                     <thead> | ||||||
|  |                         <tr> | ||||||
|  |                             <th [nzChecked]="false"></th> | ||||||
|  |                             <th>客户名称</th> | ||||||
|  |                         </tr> | ||||||
|  |                     </thead> | ||||||
|  |                     <tbody> | ||||||
|  |                         <tr *ngFor="let data of rowSelectionTable.data"> | ||||||
|  |                             <td [nzChecked]="data.checked"></td> | ||||||
|  |                             <td>{{ data.name }}</td> | ||||||
|  |                         </tr> | ||||||
|  |                     </tbody> | ||||||
|  |                 </nz-table> | ||||||
|  |             </se> | ||||||
|  |             <se label="生效节点" required> | ||||||
|  |                 <nz-radio-group> | ||||||
|  |                     <label nz-radio nzValue="A">修改成功后立即生效</label> | ||||||
|  |                     <label nz-radio nzValue="B">CRM流程审核通过后生</label> | ||||||
|  |                 </nz-radio-group> | ||||||
|  |             </se> | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
|  |     <p class="text-center mt-md">客户转移:客户跟着上级合伙人转移一并到新渠道销售下,会同步发起CRM《客户转移》流程;不转移的,客户会与上级合伙人解绑,成为渠道销售的直客</p> | ||||||
|  | </ng-template> | ||||||
| @ -0,0 +1,298 @@ | |||||||
|  | import { Component, OnInit, 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'; | ||||||
|  |  | ||||||
|  | @Component({ | ||||||
|  |   selector: 'app-partner-list', | ||||||
|  |   templateUrl: './partner-list.component.html', | ||||||
|  |   styleUrls: ['../../../../commom/less/box.less'] | ||||||
|  | }) | ||||||
|  | export class PartnerListComponent implements OnInit { | ||||||
|  |   @ViewChild('st', { static: true }) | ||||||
|  |   st!: STComponent; | ||||||
|  |   @ViewChild('sf', { static: false }) | ||||||
|  |   sf!: SFComponent; | ||||||
|  |   columns: STColumn[] = this.initST(); | ||||||
|  |   searchSchema: SFSchema = this.initSF(); | ||||||
|  |   _$expand = false; | ||||||
|  |  | ||||||
|  |   @ViewChild('editTemplate', { static: true }) | ||||||
|  |   editTemplate: any; | ||||||
|  |  | ||||||
|  |   @ViewChild('editCannel', { static: true }) | ||||||
|  |   editCannel: any; | ||||||
|  |   customers: any[] = []; | ||||||
|  |  | ||||||
|  |   constructor(public service: PartnerListService, private nzModalService: NzModalService, private router: Router) {} | ||||||
|  |  | ||||||
|  |   ngOnInit(): void {} | ||||||
|  |  | ||||||
|  |   beforeReq = (requestOptions: STRequestOptions) => { | ||||||
|  |     if (this.sf) { | ||||||
|  |       let params = { ...this.sf.value }; | ||||||
|  |       if (params.createTime) { | ||||||
|  |         params.createTime = { start: this.sf?.value?.createTime?.[0], end: this.sf?.value?.createTime?.[1] }; | ||||||
|  |       } | ||||||
|  |       Object.assign(requestOptions.body, params); | ||||||
|  |     } | ||||||
|  |     return requestOptions; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   auditPartner(item: any) { | ||||||
|  |     const modal = this.nzModalService.create({ | ||||||
|  |       nzTitle: '审核', | ||||||
|  |       nzContent: PartnerAuditModalComponent, | ||||||
|  |       nzComponentParams: { info: item }, | ||||||
|  |       nzFooter: null | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   editTemplateAction(item: any) { | ||||||
|  |     const modal = this.nzModalService.create({ | ||||||
|  |       nzTitle: '修改返佣模板', | ||||||
|  |       nzContent: this.editTemplate, | ||||||
|  |       nzOnOk: () => { | ||||||
|  |         this.confirmEditTemplate(); | ||||||
|  |         return false; | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   confirmEditTemplate() { | ||||||
|  |     const modal = this.nzModalService.confirm({ | ||||||
|  |       nzTitle: '确定要修改返佣模板吗?', | ||||||
|  |       nzOnOk: () => { | ||||||
|  |         this.nzModalService.closeAll(); | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   editCannelAction(item: any) { | ||||||
|  |     const modal = this.nzModalService.create({ | ||||||
|  |       nzTitle: '修改返佣模板', | ||||||
|  |       nzWidth: 650, | ||||||
|  |       nzContent: this.editCannel, | ||||||
|  |       nzOnOk: () => { | ||||||
|  |         this.confirmEditCannel(); | ||||||
|  |         return false; | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   confirmEditCannel() { | ||||||
|  |     const modal = this.nzModalService.confirm({ | ||||||
|  |       nzTitle: '确定提交吗?', | ||||||
|  |       nzOnOk: () => { | ||||||
|  |         this.nzModalService.closeAll(); | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   routeTo(route: string) { | ||||||
|  |     this.router.navigate([route]); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 重置表单 | ||||||
|  |    */ | ||||||
|  |   resetSF() { | ||||||
|  |     this.sf.reset(); | ||||||
|  |     this._$expand = false; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 伸缩查询条件 | ||||||
|  |    */ | ||||||
|  |   expandToggle() { | ||||||
|  |     this._$expand = !this._$expand; | ||||||
|  |     this.sf?.setValue('/expand', this._$expand); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   private initSF(): SFSchema { | ||||||
|  |     return { | ||||||
|  |       properties: { | ||||||
|  |         expand: { | ||||||
|  |           type: 'boolean', | ||||||
|  |           ui: { | ||||||
|  |             hidden: true | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         paycode: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '合伙人名称' | ||||||
|  |         }, | ||||||
|  |         paycode2: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '企业管理员' | ||||||
|  |         }, | ||||||
|  |         paycod3e: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '手机号' | ||||||
|  |         }, | ||||||
|  |         paycod31e: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '渠道销售', | ||||||
|  |           ui: { | ||||||
|  |             placeholder: '请输入姓名或者手机号', | ||||||
|  |             visibleIf: { | ||||||
|  |               expand: (value: boolean) => value | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         orderS2n: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '类型', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'dict-select', | ||||||
|  |             containsAllLabel: true, | ||||||
|  |             params: { dictKey: 'refund:apply:status' }, | ||||||
|  |             placeholder: '请选择', | ||||||
|  |             visibleIf: { | ||||||
|  |               expand: (value: boolean) => value | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         paytype: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '认证审核状态', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'dict-select', | ||||||
|  |             containsAllLabel: true, | ||||||
|  |             placeholder: '请选择', | ||||||
|  |             visibleIf: { | ||||||
|  |               expand: (value: boolean) => value | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         paymode: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '签约状态', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'dict-select', | ||||||
|  |             containsAllLabel: true, | ||||||
|  |             params: { dictKey: 'pay:mode' }, | ||||||
|  |             placeholder: '请选择', | ||||||
|  |             visibleIf: { | ||||||
|  |               expand: (value: boolean) => value | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         paymo1de: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: 'CRM状态', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'dict-select', | ||||||
|  |             containsAllLabel: true, | ||||||
|  |             params: { dictKey: 'pay:mode' }, | ||||||
|  |             placeholder: '请选择', | ||||||
|  |             visibleIf: { | ||||||
|  |               expand: (value: boolean) => value | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         paymo11de: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '注册渠道', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'dict-select', | ||||||
|  |             containsAllLabel: true, | ||||||
|  |             params: { dictKey: 'pay:mode' }, | ||||||
|  |             placeholder: '请选择', | ||||||
|  |             visibleIf: { | ||||||
|  |               expand: (value: boolean) => value | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         paymo11d1e: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '返佣模板', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'dict-select', | ||||||
|  |             containsAllLabel: true, | ||||||
|  |             params: { dictKey: 'pay:mode' }, | ||||||
|  |             placeholder: '请选择', | ||||||
|  |             visibleIf: { | ||||||
|  |               expand: (value: boolean) => value | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         paymo11d11e: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '合伙人状态', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'dict-select', | ||||||
|  |             containsAllLabel: true, | ||||||
|  |             params: { dictKey: 'pay:mode' }, | ||||||
|  |             placeholder: '请选择', | ||||||
|  |             visibleIf: { | ||||||
|  |               expand: (value: boolean) => value | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         createTime: { | ||||||
|  |           title: '注册时间', | ||||||
|  |           type: 'string', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'sl-from-to-search', | ||||||
|  |             format: 'yyyy-MM-dd', | ||||||
|  |             visibleIf: { | ||||||
|  |               expand: (value: boolean) => value | ||||||
|  |             } | ||||||
|  |           } as SFDateWidgetSchema | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   private initST(): STColumn[] { | ||||||
|  |     return [ | ||||||
|  |       { 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: 'payDate', 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: '操作', | ||||||
|  |         fixed: 'right', | ||||||
|  |         width: '140px', | ||||||
|  |         buttons: [ | ||||||
|  |           { type: 'divider' }, | ||||||
|  |           { | ||||||
|  |             text: '详情<br>', | ||||||
|  |             click: item => this.router.navigate(['/partner/partner-list/detail/' + item.id]) | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             text: '修改返佣模板', | ||||||
|  |             click: item => this.editTemplateAction(item) | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             text: '修改渠道销售', | ||||||
|  |             click: item => this.editCannelAction(item) | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             text: '审核<br>', | ||||||
|  |             click: item => this.auditPartner(item) | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             text: '重发CRM流程', | ||||||
|  |             click: item => this.router.navigate(['/partner/account-management/list/detail/' + item.id]) | ||||||
|  |           } | ||||||
|  |         ] | ||||||
|  |       } | ||||||
|  |     ]; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,7 @@ | |||||||
|  | <div> | ||||||
|  |     <sf #sf [ui]="{ '*': { spanLabelFixed: 120, grid: { span: 24 }}}" [schema]="schema" [button]="'none'"></sf> | ||||||
|  | </div> | ||||||
|  | <div class="modal-footer"> | ||||||
|  |     <button nz-button type="button" (click)="close()">取消</button> | ||||||
|  |     <button nz-button type="button" nzType="primary" (click)="sure()" [disabled]="!sf.valid">保存</button> | ||||||
|  | </div> | ||||||
| @ -0,0 +1,133 @@ | |||||||
|  | import { Component, Input, OnInit, ViewChild } from '@angular/core'; | ||||||
|  | import { SFComponent, SFSchema, SFValue } from '@delon/form'; | ||||||
|  | import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal'; | ||||||
|  | import { PartnerListService } from '../../services/partner-list.service'; | ||||||
|  |  | ||||||
|  | @Component({ | ||||||
|  |   selector: 'app-partner-audit-modal', | ||||||
|  |   templateUrl: './partner-audit-modal.component.html', | ||||||
|  |   styleUrls: ['./partner-audit-modal.component.less'] | ||||||
|  | }) | ||||||
|  | export class PartnerAuditModalComponent implements OnInit { | ||||||
|  |   @ViewChild('sf', { static: false }) | ||||||
|  |   sf!: SFComponent; | ||||||
|  |   @Input() | ||||||
|  |   info: any; | ||||||
|  |   schema!: SFSchema; | ||||||
|  |   constructor(private nzModalService: NzModalService, public service: PartnerListService) {} | ||||||
|  |  | ||||||
|  |   ngOnInit(): void { | ||||||
|  |     this.initSF(this.info); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   initSF(user: any) { | ||||||
|  |     this.schema = { | ||||||
|  |       properties: { | ||||||
|  |         isPass: { | ||||||
|  |           type: 'boolean', | ||||||
|  |           ui: { | ||||||
|  |             hidden: true | ||||||
|  |           }, | ||||||
|  |           default: this.info.isPass | ||||||
|  |         }, | ||||||
|  |         staffName: { | ||||||
|  |           title: '合伙人名称', | ||||||
|  |           type: 'string', | ||||||
|  |           ui: { widget: 'text' }, | ||||||
|  |           default: user.name | ||||||
|  |         }, | ||||||
|  |         status: { | ||||||
|  |           title: '审核结果', | ||||||
|  |           type: 'string', | ||||||
|  |           maxLength: 11, | ||||||
|  |           enum: [ | ||||||
|  |             { value: true, label: '通过' }, | ||||||
|  |             { value: false, label: '驳回' } | ||||||
|  |           ], | ||||||
|  |           ui: { | ||||||
|  |             widget: 'radio', | ||||||
|  |             hidden: this.info.isPass !== undefined | ||||||
|  |           }, | ||||||
|  |           default: true | ||||||
|  |         }, | ||||||
|  |         a: { | ||||||
|  |           title: '渠道销售', | ||||||
|  |           type: 'string', | ||||||
|  |           enum: [ | ||||||
|  |             { value: true, label: '通过' }, | ||||||
|  |             { value: false, label: '驳回' } | ||||||
|  |           ], | ||||||
|  |           ui: { | ||||||
|  |             widget: 'select', | ||||||
|  |             placeholder: '请选择', | ||||||
|  |             hidden: this.info.isPass === false, | ||||||
|  |             visibleIf: { | ||||||
|  |               status: value => value | ||||||
|  |             }, | ||||||
|  |             errors: { | ||||||
|  |               required: ' ' | ||||||
|  |             } | ||||||
|  |           }, | ||||||
|  |           default: '' | ||||||
|  |         }, | ||||||
|  |         b: { | ||||||
|  |           title: '备注', | ||||||
|  |           type: 'string', | ||||||
|  |           maxLength: 100, | ||||||
|  |           ui: { | ||||||
|  |             widget: 'textarea', | ||||||
|  |             placeholder: '请不要超过100个字', | ||||||
|  |             autosize: { minRows: 3 }, | ||||||
|  |             hidden: this.info.isPass === true, | ||||||
|  |             visibleIf: { | ||||||
|  |               status: value => !value || this.info.isPass === false | ||||||
|  |             }, | ||||||
|  |             errors: { | ||||||
|  |               required: ' ' | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       }, | ||||||
|  |       required: ['a', 'b'] | ||||||
|  |     }; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   sure() { | ||||||
|  |     this.nzModalService.confirm({ | ||||||
|  |       nzTitle: `确定以“${this.info.userName}/${this.info.mobile}”的名义重新发起CRM《付款对象合同管理》吗?`, | ||||||
|  |       nzOnOk: () => { | ||||||
|  |         this.close(); | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |     // if (!this.sf.value.roleId || this.sf.value.roleId.length === 0) { | ||||||
|  |     //   this.service.msgSrv.error('员工角色不能为空!'); | ||||||
|  |     //   return; | ||||||
|  |     // } | ||||||
|  |     // if (this.i.userId === 0) { | ||||||
|  |     //   const params: any = { | ||||||
|  |     //     ...this.sf.value | ||||||
|  |     //   }; | ||||||
|  |     //   this.service.request(this.service.$api_add_staff, params).subscribe(res => { | ||||||
|  |     //     if (res) { | ||||||
|  |     //       this.service.msgSrv.success('保存成功!'); | ||||||
|  |     //       this.modal.close(true); | ||||||
|  |     //     } | ||||||
|  |     //   }); | ||||||
|  |     // } else { | ||||||
|  |     //   const params: any = { | ||||||
|  |     //     appUserId: this.i.appUserId, | ||||||
|  |     //     ...this.sf.value | ||||||
|  |     //   }; | ||||||
|  |     //   this.service.request(this.service.$api_edit_staff, params).subscribe(res => { | ||||||
|  |     //     if (res) { | ||||||
|  |     //       this.service.msgSrv.success('编辑成功!'); | ||||||
|  |     //       this.modal.close(true); | ||||||
|  |     //     } | ||||||
|  |     //   }); | ||||||
|  |     // } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   close() { | ||||||
|  |     this.nzModalService.closeAll(); | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,328 @@ | |||||||
|  | <!-- 页头 --> | ||||||
|  | <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> | ||||||
|  |         </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?.createTime}} | ||||||
|  |                             </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> | ||||||
|  |     <ng-template #Payenable> | ||||||
|  |         <ng-container | ||||||
|  |             *ngTemplateOutlet="PopconfirmTempalte;context:{title:'确定关闭该企业支付权限吗?',content:'停用后,该企业将被限制使用支付功能,请谨慎操作'}"> | ||||||
|  |         </ng-container> | ||||||
|  |     </ng-template> | ||||||
|  |     <ng-template #Payfrozen> | ||||||
|  |         <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"> | ||||||
|  |         <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.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?'':'-'"> | ||||||
|  |         </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'}"> | ||||||
|  |                 </ng-container> | ||||||
|  |                 <ng-container | ||||||
|  |                     *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> | ||||||
|  |             - | ||||||
|  |             <ng-container *ngIf="!isEdit && !detailData?.operatingEndTime && detailData?.operatingStartTime"> | ||||||
|  |                 <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> | ||||||
|  |             <ng-container *ngIf="isEdit"> | ||||||
|  |                 <label nz-checkbox [ngModel]="!!!detailData.operatingEndTime" | ||||||
|  |                     (ngModelChange)="$event?detailData.operatingEndTime='':''" class="ml-sm">长期</label> | ||||||
|  |             </ng-container> | ||||||
|  |         </sv> | ||||||
|  |     </sv-container> | ||||||
|  |  | ||||||
|  |     <nz-divider></nz-divider> | ||||||
|  |     <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> | ||||||
|  |             <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> | ||||||
|  |             <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> | ||||||
|  |                 <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> | ||||||
|  |             </p> | ||||||
|  |         </sv-title> | ||||||
|  |         <sv label="公司名称"> | ||||||
|  |             <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?'':'-'"> | ||||||
|  |         </sv> | ||||||
|  |         <sv label="营业执照" col="2"> | ||||||
|  |             <ng-container | ||||||
|  |                 *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> | ||||||
|  |             - | ||||||
|  |             <ng-container *ngIf="!isEdit && !detailData?.operatingEndTime && detailData?.operatingStartTime"> | ||||||
|  |                 <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> | ||||||
|  |             <ng-container *ngIf="isEdit"> | ||||||
|  |                 <label nz-checkbox [ngModel]="!!!detailData.operatingEndTime" | ||||||
|  |                     (ngModelChange)="$event?detailData.operatingEndTime='':''" class="ml-sm">长期</label> | ||||||
|  |             </ng-container> | ||||||
|  |         </sv> | ||||||
|  |     </sv-container> | ||||||
|  |     <nz-divider></nz-divider> | ||||||
|  |     <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?'':'-'"> | ||||||
|  |         </sv> | ||||||
|  |         <sv label="身份证号码"> | ||||||
|  |             <input nz-input type="text" [(ngModel)]="detailData.legalPersonIdentityVO.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> | ||||||
|  |             - | ||||||
|  |             <ng-container | ||||||
|  |                 *ngIf="!isEdit && !detailData?.legalPersonIdentityVO?.validEndTime && detailData.legalPersonIdentityVO.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> | ||||||
|  |             <ng-container *ngIf="isEdit"> | ||||||
|  |                 <label nz-checkbox [ngModel]="!!!detailData.legalPersonIdentityVO.validEndTime" | ||||||
|  |                     (ngModelChange)="$event?detailData.legalPersonIdentityVO.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'}"> | ||||||
|  |                 </ng-container> | ||||||
|  |                 <ng-container | ||||||
|  |                     *ngTemplateOutlet="uploadTemplate;context:{data:detailData?.legalPersonIdentityVO,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-divider></nz-divider> | ||||||
|  |     <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-container> | ||||||
|  | </nz-card> | ||||||
|  |  | ||||||
|  | <nz-card> | ||||||
|  |     <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> | ||||||
|  |         </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> | ||||||
|  |  | ||||||
|  | <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> | ||||||
|  |     <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> | ||||||
|  |     <p> | ||||||
|  |         客户转移:客户跟着上级合伙人转移一并到新渠道销售下,会同步发起CRM《客户转移》流程;不转移的,客户会与上级合伙人解绑,修改成功后,修改时间也是合伙人与客户的结算结束时间,成为原来渠道销售的直客。 | ||||||
|  |     </p> | ||||||
|  | </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,357 @@ | |||||||
|  | import { DatePipe } from '@angular/common'; | ||||||
|  | import { Component, 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-partner-detail', | ||||||
|  |   templateUrl: './partner-detail.component.html', | ||||||
|  |   styleUrls: ['./partner-detail.component.less'], | ||||||
|  |   providers: [DatePipe] | ||||||
|  | }) | ||||||
|  | export class PartnerDetailComponent implements OnInit { | ||||||
|  |   @ViewChild('logModal') | ||||||
|  |   logModal: any; | ||||||
|  |  | ||||||
|  |   columns: { logsColumn: STColumn[]; changeColumn: STColumn[]; beChangeColumn: STColumn[] } = this.initST(); | ||||||
|  |  | ||||||
|  |   detailData: any = { adminUserInfo: { name: '' }, legalPersonIdentityVO: { name: '' } }; | ||||||
|  |   tempalateData = { ...this.detailData }; | ||||||
|  |  | ||||||
|  |   isEdit = false; | ||||||
|  |  | ||||||
|  |   uploadURl = apiConf.waterFileUpload; | ||||||
|  |   disabledUpload = false; | ||||||
|  |   enterpriseAddressCode: any = []; | ||||||
|  |   ltdId: any = []; | ||||||
|  |  | ||||||
|  |   esignCheckStatus: any = { | ||||||
|  |     0: '不通过', | ||||||
|  |     1: '通过', | ||||||
|  |     2: '未认证' | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   scrollTop = 0; | ||||||
|  |   subscribeScoll!: Subscription; | ||||||
|  |   constructor( | ||||||
|  |     public service: PartnerListService, | ||||||
|  |     private route: ActivatedRoute, | ||||||
|  |     private nzModalService: NzModalService, | ||||||
|  |     private datePipe: DatePipe | ||||||
|  |   ) {} | ||||||
|  |   ngOnDestroy(): void { | ||||||
|  |     this.subscribeScoll.unsubscribe(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   ngOnInit() { | ||||||
|  |     this.initData(); | ||||||
|  |     this.loadltdId(); | ||||||
|  |     this.subscribeScoll = fromEvent(window, 'scroll').subscribe(event => { | ||||||
|  |       this.scrollTop = document.documentElement.scrollTop; | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  |   loadltdId() { | ||||||
|  |     // this.service.getNetworkFreightForwarder().subscribe(res => { | ||||||
|  |     //   if (res) { | ||||||
|  |     //     this.ltdId = res; | ||||||
|  |     //   } | ||||||
|  |     // }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   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) | ||||||
|  |     //       ]; | ||||||
|  |     //     } | ||||||
|  |     //   }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   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 | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   showChangeDetail() { | ||||||
|  |     const modal = this.nzModalService.create({ | ||||||
|  |       nzTitle: '详情', | ||||||
|  |       nzContent: this.logModal, | ||||||
|  |       nzNoAnimation: true, | ||||||
|  |       nzWidth: 700, | ||||||
|  |       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); | ||||||
|  |       } | ||||||
|  |       if (id === 'detailPhoto') { | ||||||
|  |         this.checkBusinessLicense(file.response.data?.fullFilePath); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 级联获取地区数据 | ||||||
|  |    * @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.legalPersonIdentityVO, { | ||||||
|  |       validStartTime: this.datePipe.transform(dateil.legalPersonIdentityVO.validStartTime, 'yyyy-MM-dd'), | ||||||
|  |       validEndTime: this.datePipe.transform(dateil.legalPersonIdentityVO.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.legalPersonIdentityVO }, | ||||||
|  |       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.legalPersonIdentityVO.name = res.name; | ||||||
|  |     //         } | ||||||
|  |     //         if (res.number) { | ||||||
|  |     //           this.detailData.legalPersonIdentityVO.certificateNumber = res.number; | ||||||
|  |     //         } | ||||||
|  |     //       } | ||||||
|  |     //       if (isFront === 'back') { | ||||||
|  |     //         // 背面 | ||||||
|  |     //         if (res.validFrom) { | ||||||
|  |     //           this.detailData.legalPersonIdentityVO.validStartTime = res.validFrom; | ||||||
|  |     //         } | ||||||
|  |     //         if (res.validTo) { | ||||||
|  |     //           this.detailData.legalPersonIdentityVO.validEndTime = res.validTo; | ||||||
|  |     //         } else { | ||||||
|  |     //           this.detailData.legalPersonIdentityVO.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; | ||||||
|  |     //         } | ||||||
|  |     //       } | ||||||
|  |     //     } | ||||||
|  |     //   } | ||||||
|  |     // }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   // 识别营业执照 | ||||||
|  |   checkBusinessLicense(imgurl: any) { | ||||||
|  |     // this.service.request(this.service.$api_ocr_recognize_business_license, { businessLicenseUrl: imgurl }).subscribe(res => { | ||||||
|  |     //   if (res) { | ||||||
|  |     //     if (res.registrationNumber) { | ||||||
|  |     //       this.detailData.unifiedSocialCreditCode = res.registrationNumber; | ||||||
|  |     //     } | ||||||
|  |     //     if (res.name) { | ||||||
|  |     //       this.detailData.enterpriseName = res.name; | ||||||
|  |     //     } | ||||||
|  |     //     if (res.type) { | ||||||
|  |     //       this.detailData.enterpriseType = res.type; | ||||||
|  |     //     } | ||||||
|  |     //     if (res.addressRegionCodes) { | ||||||
|  |     //       this.detailData.enterpriseAddressCode = res.addressRegionCodes; | ||||||
|  |     //     } | ||||||
|  |     //     if (res.address) { | ||||||
|  |     //       this.detailData.enterpriseAddress = res.address; | ||||||
|  |     //     } | ||||||
|  |     //     if (res.registeredCapital) { | ||||||
|  |     //       this.detailData.registrationCapital = res.registeredCapital; | ||||||
|  |     //     } | ||||||
|  |     //     if (res.foundDate) { | ||||||
|  |     //       this.detailData.enterpriseRegistrationTime = res.foundDate; | ||||||
|  |     //     } | ||||||
|  |     //     if (res.businessTermStartDate) { | ||||||
|  |     //       this.detailData.operatingStartTime = res.businessTermStartDate; | ||||||
|  |     //     } | ||||||
|  |     //     if (res.businessTermEndDate) { | ||||||
|  |     //       this.detailData.operatingEndTime = res.businessTermEndDate; | ||||||
|  |     //     } else { | ||||||
|  |     //       this.detailData.operatingEndTime = null; | ||||||
|  |     //     } | ||||||
|  |     //     if (res.businessScope) { | ||||||
|  |     //       this.detailData.businessScope = res.businessScope; | ||||||
|  |     //     } | ||||||
|  |     //   } | ||||||
|  |     // }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   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: '操作', | ||||||
|  |           fixed: 'right', | ||||||
|  |           width: '140px', | ||||||
|  |           buttons: [ | ||||||
|  |             { | ||||||
|  |               text: '详情', | ||||||
|  |               click: () => this.showChangeDetail() | ||||||
|  |             } | ||||||
|  |           ] | ||||||
|  |         } | ||||||
|  |       ], | ||||||
|  |       changeColumn: [ | ||||||
|  |         { title: '客户名称', index: 'payCode', width: 180 }, | ||||||
|  |         { title: '合伙人', index: 'ltdName', width: 160 }, | ||||||
|  |         { title: '渠道销售', index: 'payDate', className: 'text-center', width: 130 }, | ||||||
|  |         { title: 'CRM审核状态', index: 'payDate', width: 150 }, | ||||||
|  |         { title: '生效时间', index: 'payDate', className: 'text-center', width: 130 } | ||||||
|  |       ], | ||||||
|  |       beChangeColumn: [ | ||||||
|  |         { title: '客户名称', index: 'payCode', width: 180 }, | ||||||
|  |         { title: '合伙人', index: 'ltdName', width: 160 }, | ||||||
|  |         { title: '渠道销售', index: 'payDate', className: 'text-center', width: 130 }, | ||||||
|  |         { title: '生效时间', index: 'payDate', className: 'text-center', width: 130 } | ||||||
|  |       ] | ||||||
|  |     }; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,30 @@ | |||||||
|  | import { Injectable, Injector } from '@angular/core'; | ||||||
|  | import { BaseService, EACacheService } from '@shared'; | ||||||
|  | import { NzModalService } from 'ng-zorro-antd/modal'; | ||||||
|  | import { ImageViewComponent } from 'src/app/shared/components/imagelist'; | ||||||
|  |  | ||||||
|  | @Injectable() | ||||||
|  | export class PartnerListService extends BaseService { | ||||||
|  |   $mock_url = '/rule?_allow_anonymous=true'; | ||||||
|  |  | ||||||
|  |   // 根据地区code查询列表 | ||||||
|  |   $api_get_region_by_code = '/api/mdc/pbc/region/getRegionByCode'; | ||||||
|  |   // 根据地区code查询地区详情 | ||||||
|  |   $api_get_region_detail_by_code = '/api/mdc/pbc/region/getRegionDetailByCode'; | ||||||
|  |   // 营业执照识别 | ||||||
|  |   $api_ocr_recognize_business_license = '/api/mdc/pbc/hwc/ocr/recognizeBusinessLicense'; | ||||||
|  |   // 身份证识别 | ||||||
|  |   $api_ocr_recognize_id_card = '/api/mdc/pbc/hwc/ocr/recognizeIdCard'; | ||||||
|  |  | ||||||
|  |   constructor(public injector: Injector, private nzModalService: NzModalService) { | ||||||
|  |     super(injector); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   showImg(url: any) { | ||||||
|  |     const params = { | ||||||
|  |       imgList: [url], | ||||||
|  |       index: 0 | ||||||
|  |     }; | ||||||
|  |     this.nzModalService.create({ nzContent: ImageViewComponent, nzComponentParams: { params } }); | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -29,7 +29,14 @@ import { ParterRebateManageMentRecordComponent } from './rebate-management/compo | |||||||
| import { PartnerAccountManagementAccountDetailComponent } from './account-management/components/account-detail/account-detail.component'; | import { PartnerAccountManagementAccountDetailComponent } from './account-management/components/account-detail/account-detail.component'; | ||||||
| import { PartnerAccountManagementRecordedDetailComponent } from './account-management/components/recorded-detail/recorded-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 { PartnerAccountManagementWithdrawalsRecordComponent } from './account-management/components/withdrawals-record/withdrawals-record.component'; | ||||||
| import { PartnerAccountManagementWithdrawalsDetailComponent } from './account-management/components/withdrawals-record/withdrawals-detail/withdrawals-detail.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 { ParterRebateManageMentSettingComponent } from './rebate-management/components/rebate-setting/rebate-setting.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'; | ||||||
|  |  | ||||||
| const routes: Routes = [ | const routes: Routes = [ | ||||||
|   { |   { | ||||||
| @ -41,7 +48,7 @@ const routes: Routes = [ | |||||||
|       { path: 'partner/custom-detail/:id', component: PartnerPartnerCustomDetailComponent }, |       { path: 'partner/custom-detail/:id', component: PartnerPartnerCustomDetailComponent }, | ||||||
|       { path: 'partner/custom-order-detail/:id', component: PartnerPartnerCustomOrderDetailComponent }, |       { path: 'partner/custom-order-detail/:id', component: PartnerPartnerCustomOrderDetailComponent }, | ||||||
|       { path: 'sale/custom-detail/:id', component: PartnerSaleCustomDetailComponent }, |       { path: 'sale/custom-detail/:id', component: PartnerSaleCustomDetailComponent }, | ||||||
|       { path: 'sale/partner-detail/:id', component: PartnerSalePartnerDetailComponent }, |       { path: 'sale/partner-detail/:id', component: PartnerSalePartnerDetailComponent } | ||||||
|     ] |     ] | ||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
| @ -49,7 +56,7 @@ const routes: Routes = [ | |||||||
|     children: [ |     children: [ | ||||||
|       { path: '', component: ParterChannelSalesListComponent }, |       { path: '', component: ParterChannelSalesListComponent }, | ||||||
|       { path: 'list', component: ParterChannelSalesListComponent }, |       { path: 'list', component: ParterChannelSalesListComponent }, | ||||||
|       { path: 'edit', component: ParterChannelSalesEditComponent }, |       { path: 'edit', component: ParterChannelSalesEditComponent } | ||||||
|     ] |     ] | ||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
| @ -57,7 +64,7 @@ const routes: Routes = [ | |||||||
|     children: [ |     children: [ | ||||||
|       { path: '', component: ParterLevelConfigListComponent }, |       { path: '', component: ParterLevelConfigListComponent }, | ||||||
|       { path: 'list', component: ParterLevelConfigListComponent }, |       { path: 'list', component: ParterLevelConfigListComponent }, | ||||||
|       { path: 'edit', component: ParterLevelConfigEditComponent }, |       { path: 'edit', component: ParterLevelConfigEditComponent } | ||||||
|     ] |     ] | ||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
| @ -65,6 +72,7 @@ const routes: Routes = [ | |||||||
|     children: [ |     children: [ | ||||||
|       { path: 'particulars', component: ParterRebateManageMentParticularsComponent }, |       { path: 'particulars', component: ParterRebateManageMentParticularsComponent }, | ||||||
|       { path: 'record', component: ParterRebateManageMentRecordComponent }, |       { path: 'record', component: ParterRebateManageMentRecordComponent }, | ||||||
|  |       { path: 'setting', component: ParterRebateManageMentSettingComponent } | ||||||
|     ] |     ] | ||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
| @ -74,7 +82,32 @@ const routes: Routes = [ | |||||||
|       { path: 'account-detail', component: PartnerAccountManagementAccountDetailComponent }, |       { path: 'account-detail', component: PartnerAccountManagementAccountDetailComponent }, | ||||||
|       { path: 'recorded-detail/:id', component: PartnerAccountManagementRecordedDetailComponent }, |       { path: 'recorded-detail/:id', component: PartnerAccountManagementRecordedDetailComponent }, | ||||||
|       { path: 'withdraw-record', component: PartnerAccountManagementWithdrawalsRecordComponent }, |       { path: 'withdraw-record', component: PartnerAccountManagementWithdrawalsRecordComponent }, | ||||||
|       { path: 'withdraw-record/:id', component: PartnerAccountManagementWithdrawalsDetailComponent }, |       { path: 'withdraw-record/:id', component: PartnerAccountManagementWithdralDetailComponent } | ||||||
|  |     ] | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     path: 'partner-list', | ||||||
|  |     children: [ | ||||||
|  |       { path: '', component: PartnerListComponent }, | ||||||
|  |       { path: 'detail/:id', component: PartnerDetailComponent }, | ||||||
|  |       { path: 'add-etp-partner', component: AddEtpPartnerComponent }, | ||||||
|  |       { path: 'add-personal-partner', component: AddPersonalPartnerComponent }, | ||||||
|  |       { | ||||||
|  |         path: 'am', | ||||||
|  |         children: [ | ||||||
|  |           { path: '', redirectTo: 'list' }, | ||||||
|  |           { path: '', component: PartnerAccountManagementListComponent }, | ||||||
|  |           { path: 'detail/:id', component: PartnerAccountManagementAccountDetailComponent }, | ||||||
|  |           { path: 'recorded/detail/:id', component: PartnerAccountManagementRecordedDetailComponent }, | ||||||
|  |         ] | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         path: 'withdraw-record', | ||||||
|  |         children: [ | ||||||
|  |           { path: '', component: PartnerAccountManagementWithdrawalsRecordComponent }, | ||||||
|  |           { path: 'detail/:id', component: PartnerAccountManagementWithdralDetailComponent } | ||||||
|  |         ] | ||||||
|  |       }, | ||||||
|     ] |     ] | ||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
| @ -83,9 +116,17 @@ const routes: Routes = [ | |||||||
|       { path: '', component: ParterClaimAuditListComponent }, |       { path: '', component: ParterClaimAuditListComponent }, | ||||||
|       { path: 'list', component: ParterClaimAuditListComponent }, |       { path: 'list', component: ParterClaimAuditListComponent }, | ||||||
|       { path: 'channel-detail', component: ParterClaimAuditListChannelDetailComponent }, |       { path: 'channel-detail', component: ParterClaimAuditListChannelDetailComponent }, | ||||||
|       { path: 'partner-detail', component: ParterClaimAuditListPartnerDetailComponent }, |       { path: 'partner-detail', component: ParterClaimAuditListPartnerDetailComponent } | ||||||
|     ] |     ] | ||||||
|   }, |   }, | ||||||
|  |   { | ||||||
|  |     path: 'recorded', | ||||||
|  |     children: [ | ||||||
|  |       { path: 'record', component: PartnerRecordedRecordComponent }, | ||||||
|  |       { path: 'record/detail/:id', component: PartnerRecordedDetailComponent } | ||||||
|  |     ] | ||||||
|  |   }, | ||||||
|  |  | ||||||
| ]; | ]; | ||||||
| @NgModule({ | @NgModule({ | ||||||
|   imports: [RouterModule.forChild(routes)], |   imports: [RouterModule.forChild(routes)], | ||||||
|  | |||||||
| @ -8,38 +8,47 @@ | |||||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\partner\\partner.module.ts |  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\partner\\partner.module.ts | ||||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. |  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||||
|  */ |  */ | ||||||
| import { NgModule } from '@angular/core'; |  | ||||||
| import { CommonModule } from '@angular/common'; | import { CommonModule } from '@angular/common'; | ||||||
|  | import { NgModule } from '@angular/core'; | ||||||
| import { SharedModule } from '@shared'; | import { SharedModule } from '@shared'; | ||||||
| import { PartnerRoutingModule } from './partner-routing.module'; | 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 { PartnerAccountManagementVirtualAccountDetailComponent } from './account-management/components/virtual-account-detail/virtual-account-detail.component'; | ||||||
|  | import { PartnerAccountManagementWithdralDetailComponent } from './account-management/components/withdrawals-record/withdrawals-detail/withdrawals-detail.component'; | ||||||
|  | import { PartnerAccountManagementWithdrawalsRecordComponent } from './account-management/components/withdrawals-record/withdrawals-record.component'; | ||||||
| import { PartnerBusinessStatisticsIndexComponent } from './business-statistics/components/index/index.component'; | import { PartnerBusinessStatisticsIndexComponent } from './business-statistics/components/index/index.component'; | ||||||
| import { ParterChannelSalesListComponent } from './channel-sales/components/list/list.component'; |  | ||||||
| import { ParterChannelSalesEditComponent } from './channel-sales/components/edit/edit.component'; |  | ||||||
| import { ParterLevelConfigEditComponent } from './level-config/components/edit/edit.component'; |  | ||||||
| import { ParterLevelConfigListComponent } from './level-config/components/list/list.component'; |  | ||||||
| import { PartnerPartnerStatisticsComponent } from './business-statistics/components/partner-statistics/partner-statistics.component'; |  | ||||||
| import { PartnerSaleStatisticsComponent } from './business-statistics/components/sale-statistics/sale-statistics.component'; |  | ||||||
| import { PartnerSaleCustomDetailComponent } from './business-statistics/components/sale-custom-detail/sale-custom-detail.component'; |  | ||||||
| import { PartnerPartnerCustomDetailComponent } from './business-statistics/components/partner-custom-detail/partner-custom-detail.component'; | import { PartnerPartnerCustomDetailComponent } from './business-statistics/components/partner-custom-detail/partner-custom-detail.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 { 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 { PartnerPartnerOrderDetailComponent } from './business-statistics/components/partner-order-detail/partner-order-detail.component'; | ||||||
| import { PartnerAccountManagementListComponent } from './account-management/components/list/list.component'; | import { PartnerPartnerStatisticsComponent } from './business-statistics/components/partner-statistics/partner-statistics.component'; | ||||||
| import { ParterClaimAuditListComponent } from './claim-audit/components/list/list.component'; | import { PartnerSaleCustomDetailComponent } from './business-statistics/components/sale-custom-detail/sale-custom-detail.component'; | ||||||
| import { ParterClaimAuditListChannelDetailComponent } from './claim-audit/components/channel-detail/channel-detail.component'; | import { PartnerSalePartnerDetailComponent } from './business-statistics/components/sale-partner-detail/sale-partner-detail.component'; | ||||||
| import { ParterClaimAuditListPartnerDetailComponent } from './claim-audit/components/partner-detail/partner-detail.component'; | import { PartnerSaleStatisticsComponent } from './business-statistics/components/sale-statistics/sale-statistics.component'; | ||||||
|  | import { ParterChannelSalesEditComponent } from './channel-sales/components/edit/edit.component'; | ||||||
|  | import { ParterChannelSalesListComponent } from './channel-sales/components/list/list.component'; | ||||||
| import { ParterClaimAuditListChannelApproveComponent } from './claim-audit/components/channel-approve/channel-approve.component'; | import { ParterClaimAuditListChannelApproveComponent } from './claim-audit/components/channel-approve/channel-approve.component'; | ||||||
| import { ParterClaimAuditListPartnerApproveComponent } from './claim-audit/components/partner-approve/partner-approve.component'; | import { ParterClaimAuditListChannelDetailComponent } from './claim-audit/components/channel-detail/channel-detail.component'; | ||||||
| import { ParterClaimAuditListPartnerRejectComponent } from './claim-audit/components/partner-reject/partner-reject.component'; |  | ||||||
| import { ParterClaimAuditListChannelRejectComponent } from './claim-audit/components/channel-reject/channel-reject.component'; | import { ParterClaimAuditListChannelRejectComponent } from './claim-audit/components/channel-reject/channel-reject.component'; | ||||||
| import { PartnerAccountManagementVirtualAccountDetailComponent } from './account-management/components/virtual-account-detail/virtual-account-detail.component'; | import { ParterClaimAuditListComponent } from './claim-audit/components/list/list.component'; | ||||||
|  | import { ParterClaimAuditListPartnerApproveComponent } from './claim-audit/components/partner-approve/partner-approve.component'; | ||||||
| import { PartnerAccountManagementAccountDetailComponent } from './account-management/components/account-detail/account-detail.component'; | import { ParterClaimAuditListPartnerDetailComponent } from './claim-audit/components/partner-detail/partner-detail.component'; | ||||||
| import { PartnerAccountManagementRecordedDetailComponent } from './account-management/components/recorded-detail/recorded-detail.component'; | import { ParterClaimAuditListPartnerRejectComponent } from './claim-audit/components/partner-reject/partner-reject.component'; | ||||||
| import { PartnerAccountManagementWithdrawalsRecordComponent } from './account-management/components/withdrawals-record/withdrawals-record.component'; | import { ParterLevelConfigEditComponent } from './level-config/components/edit/edit.component'; | ||||||
| import { PartnerAccountManagementWithdrawalsDetailComponent } from './account-management/components/withdrawals-record/withdrawals-detail/withdrawals-detail.component'; | import { ParterLevelConfigListComponent } from './level-config/components/list/list.component'; | ||||||
|  | import { PartnerListComponent } from './partner-list/components/index/partner-list.component'; | ||||||
|  | import { PartnerAuditModalComponent } from './partner-list/components/partner-audit-modal/partner-audit-modal.component'; | ||||||
|  | import { PartnerDetailComponent } from './partner-list/components/partner-detail/partner-detail.component'; | ||||||
|  | import { PartnerListService } from './partner-list/services/partner-list.service'; | ||||||
|  | import { PartnerRoutingModule } from './partner-routing.module'; | ||||||
|  | import { ParterRebateManageMentParticularsComponent } from './rebate-management/components/particulars/particulars.component'; | ||||||
| import { ParterRebateManageMentRecordComponent } from './rebate-management/components/rebate-record/rebate-record.component'; | import { ParterRebateManageMentRecordComponent } from './rebate-management/components/rebate-record/rebate-record.component'; | ||||||
|  | import { ParterRebateManageMentSettingComponent } from './rebate-management/components/rebate-setting/rebate-setting.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 { ParterRebateManageMenAbnormalFeedbackComponent } from './rebate-management/model/abnormal-feedback/abnormal-feedback.component'; | ||||||
|  | import { PartnerRecordedDetailComponent } from './recorded/components/detail/detail.component'; | ||||||
|  | import { PartnerRecordedRecordComponent } from './recorded/components/record/record.component'; | ||||||
|  |  | ||||||
| const COMPONENTS: any[] = [ | const COMPONENTS: any[] = [ | ||||||
|   PartnerBusinessStatisticsIndexComponent, |   PartnerBusinessStatisticsIndexComponent, | ||||||
| @ -69,11 +78,21 @@ const COMPONENTS: any[] = [ | |||||||
|   PartnerAccountManagementAccountDetailComponent, |   PartnerAccountManagementAccountDetailComponent, | ||||||
|   PartnerAccountManagementRecordedDetailComponent, |   PartnerAccountManagementRecordedDetailComponent, | ||||||
|   PartnerAccountManagementWithdrawalsRecordComponent, |   PartnerAccountManagementWithdrawalsRecordComponent, | ||||||
|   PartnerAccountManagementWithdrawalsDetailComponent |   PartnerAccountManagementWithdralDetailComponent, | ||||||
|  |   PartnerRecordedRecordComponent, | ||||||
|  |   PartnerRecordedDetailComponent, | ||||||
|  |   PartnerListComponent, | ||||||
|  |   PartnerDetailComponent, | ||||||
|  |   ParterRebateManageMenAbnormalFeedbackComponent, | ||||||
|  |   ParterRebateManageMentSettingComponent, | ||||||
|  |   PartnerAuditModalComponent, | ||||||
|  |   AddEtpPartnerComponent, | ||||||
|  |   AddPersonalPartnerComponent | ||||||
| ]; | ]; | ||||||
|  |  | ||||||
| @NgModule({ | @NgModule({ | ||||||
|   declarations: [...COMPONENTS], |   declarations: [...COMPONENTS], | ||||||
|   imports: [CommonModule, PartnerRoutingModule, SharedModule] |   imports: [CommonModule, PartnerRoutingModule, SharedModule], | ||||||
|  |   providers: [PartnerListService] | ||||||
| }) | }) | ||||||
| export class PartnerModule { } | export class PartnerModule { } | ||||||
|  | |||||||
| @ -4,7 +4,7 @@ | |||||||
|  * @Author       : Shiming |  * @Author       : Shiming | ||||||
|  * @Date         : 2022-02-24 20:09:49 |  * @Date         : 2022-02-24 20:09:49 | ||||||
|  * @LastEditors  : Shiming |  * @LastEditors  : Shiming | ||||||
|  * @LastEditTime : 2022-03-09 15:04:50 |  * @LastEditTime : 2022-03-10 15:12:03 | ||||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-record\\rebate-record.component.html |  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-record\\rebate-record.component.html | ||||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. |  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||||
| --> | --> | ||||||
| @ -41,5 +41,8 @@ | |||||||
|     [loadingDelay]="500" |     [loadingDelay]="500" | ||||||
|     [loading]="service.http.loading" |     [loading]="service.http.loading" | ||||||
|   > |   > | ||||||
|  |   <ng-template st-row='name44' let-item let-index='index'> | ||||||
|  |     <div style="color: #f59a23;" (click)="feedback()">1223</div> | ||||||
|  |   </ng-template> | ||||||
|   </st> |   </st> | ||||||
| </nz-card> | </nz-card> | ||||||
|  | |||||||
| @ -7,6 +7,7 @@ import { processSingleSort, ShipperBaseService } from '@shared'; | |||||||
| import { NzModalService } from 'ng-zorro-antd/modal'; | import { NzModalService } from 'ng-zorro-antd/modal'; | ||||||
| import { RebateManagementService } from '../../services/rebate-management.service'; | import { RebateManagementService } from '../../services/rebate-management.service'; | ||||||
| import { ParterRebateManageMenRecordDetailComponent } from '../../model/record-detail/record-detail.component'; | import { ParterRebateManageMenRecordDetailComponent } from '../../model/record-detail/record-detail.component'; | ||||||
|  | import { ParterRebateManageMenAbnormalFeedbackComponent } from '../../model/abnormal-feedback/abnormal-feedback.component'; | ||||||
|  |  | ||||||
| @Component({ | @Component({ | ||||||
|   selector: 'app-parter-channel-rebate-management-record', |   selector: 'app-parter-channel-rebate-management-record', | ||||||
| @ -27,9 +28,8 @@ export class ParterRebateManageMentRecordComponent implements OnInit { | |||||||
|     public router: Router, |     public router: Router, | ||||||
|     public ar: ActivatedRoute, |     public ar: ActivatedRoute, | ||||||
|     public service: RebateManagementService, |     public service: RebateManagementService, | ||||||
|     private modalService: NzModalService, |     private modal: NzModalService, | ||||||
|     public shipperservice: ShipperBaseService, |     public shipperservice: ShipperBaseService, | ||||||
|     private modal: ModalHelper |  | ||||||
|   ) {} |   ) {} | ||||||
|   /** |   /** | ||||||
|    * 查询字段个数 |    * 查询字段个数 | ||||||
| @ -114,7 +114,7 @@ export class ParterRebateManageMentRecordComponent implements OnInit { | |||||||
|       }, |       }, | ||||||
|       { |       { | ||||||
|         title: '异常反馈', |         title: '异常反馈', | ||||||
|         index: 'name1' |         render: 'name44' | ||||||
|       }, |       }, | ||||||
|       { |       { | ||||||
|         title: '操作', |         title: '操作', | ||||||
| @ -131,15 +131,36 @@ export class ParterRebateManageMentRecordComponent implements OnInit { | |||||||
|     ]; |     ]; | ||||||
|   } |   } | ||||||
|   /** |   /** | ||||||
|    *查看详情 |    *查看明细 | ||||||
|    */ |    */ | ||||||
|    viewEvaluate(item: any) { |    viewEvaluate(item: any) { | ||||||
|     //  this.modalService |     const modal = this.modal.create({ | ||||||
|     this.modal.createStatic(ParterRebateManageMenRecordDetailComponent, {i:item}).subscribe((res: boolean)=> { |       nzTitle: '明细', | ||||||
|       if(res) { |       nzWidth: 1200, | ||||||
|  |       nzContent: ParterRebateManageMenRecordDetailComponent, | ||||||
|  |       nzComponentParams: { }, | ||||||
|  |       nzFooter: null | ||||||
|  |     }); | ||||||
|  |     modal.afterClose.subscribe((res: any) => { | ||||||
|  |       if (res) { | ||||||
|       } |       } | ||||||
|     }) |     }); | ||||||
|  |   } | ||||||
|  |   /** | ||||||
|  |    *异常反馈 | ||||||
|  |    */ | ||||||
|  |    feedback(item?: any) { | ||||||
|  |        const modal = this.modal.create({ | ||||||
|  |           nzTitle: '异常反馈', | ||||||
|  |           nzWidth: 580, | ||||||
|  |           nzContent: ParterRebateManageMenAbnormalFeedbackComponent, | ||||||
|  |           nzComponentParams: { i: item }, | ||||||
|  |           nzFooter: null | ||||||
|  |         }); | ||||||
|  |         modal.afterClose.subscribe((res: any) => { | ||||||
|  |           if (res) { | ||||||
|  |           } | ||||||
|  |         }); | ||||||
|   } |   } | ||||||
|   /** |   /** | ||||||
|    * 重置表单 |    * 重置表单 | ||||||
|  | |||||||
| @ -0,0 +1,48 @@ | |||||||
|  | <!-- | ||||||
|  |  * @Description  :  | ||||||
|  |  * @Version      : 1.0 | ||||||
|  |  * @Author       : Shiming | ||||||
|  |  * @Date         : 2022-02-24 20:09:49 | ||||||
|  |  * @LastEditors  : Shiming | ||||||
|  |  * @LastEditTime : 2022-03-10 15:12:03 | ||||||
|  |  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-record\\rebate-record.component.html | ||||||
|  |  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||||
|  | --> | ||||||
|  | <page-header-wrapper [title]="''"> </page-header-wrapper> | ||||||
|  | <nz-card> | ||||||
|  |   <div nz-row nzGutter="8"> | ||||||
|  |     <!-- 查询字段小于或等于3个时,不显示伸缩按钮 --> | ||||||
|  |       <sf | ||||||
|  |         #sf | ||||||
|  |         [schema]="schema" | ||||||
|  |         [ui]="ui" | ||||||
|  |         [mode]="'search'" | ||||||
|  |         [disabled]="!sf?.valid" | ||||||
|  |         [loading]="service.http.loading" | ||||||
|  |         [button]="'none'" | ||||||
|  |       ></sf> | ||||||
|  |       <div nz-col [nzSpan]="_$expand ? 24 : 6" class="text-right"> | ||||||
|  |       <button nz-button nzType="primary" [nzLoading]="service.http.loading" (click)="st?.load(1);">查询</button> | ||||||
|  |       <button nz-button nzType="primary" [disabled]="service.http.loading" >导出</button> | ||||||
|  |       <button nz-button [disabled]="service.http.loading" (click)="resetSF()">重置</button> | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
|  | </nz-card> | ||||||
|  |  | ||||||
|  | <nz-card> | ||||||
|  |   <!-- 数据列表 --> | ||||||
|  |   <st | ||||||
|  |     #st | ||||||
|  |     [data]="data" | ||||||
|  |     [columns]="columns" | ||||||
|  |     [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }" | ||||||
|  |     [res]="{ reName: { list: 'data.records', total: 'data.total' } }" | ||||||
|  |     [page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }" | ||||||
|  |     [loadingDelay]="500" | ||||||
|  |     [loading]="service.http.loading" | ||||||
|  |   > | ||||||
|  |   <ng-template st-row='name44' let-item let-index='index'> | ||||||
|  |     <div style="color: #f59a23;" (click)="feedback()">1223</div> | ||||||
|  |   </ng-template> | ||||||
|  |   </st> | ||||||
|  | </nz-card> | ||||||
| @ -0,0 +1,172 @@ | |||||||
|  | import { ModalHelper } from '@delon/theme'; | ||||||
|  | import { Component, OnInit, ViewChild } from '@angular/core'; | ||||||
|  | import { ActivatedRoute, Router } from '@angular/router'; | ||||||
|  | import { STColumn, STComponent, STData, STRequestOptions } from '@delon/abc/st'; | ||||||
|  | import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form'; | ||||||
|  | import { processSingleSort, ShipperBaseService } from '@shared'; | ||||||
|  | import { NzModalService } from 'ng-zorro-antd/modal'; | ||||||
|  | import { RebateManagementService } from '../../services/rebate-management.service'; | ||||||
|  | import { ParterRebateManageMenRecordDetailComponent } from '../../model/record-detail/record-detail.component'; | ||||||
|  | import { ParterRebateManageMenAbnormalFeedbackComponent } from '../../model/abnormal-feedback/abnormal-feedback.component'; | ||||||
|  |  | ||||||
|  | @Component({ | ||||||
|  |   selector: 'app-parter-channel-rebate-management-setting', | ||||||
|  |   templateUrl: './rebate-setting.component.html' | ||||||
|  | }) | ||||||
|  | export class ParterRebateManageMentSettingComponent implements OnInit { | ||||||
|  |   schema: SFSchema = {}; | ||||||
|  |   columns!: STColumn[]; | ||||||
|  |   ui!: SFUISchema; | ||||||
|  |   @ViewChild('st', { static: false }) | ||||||
|  |   st!: STComponent; | ||||||
|  |   @ViewChild('sf', { static: false }) | ||||||
|  |   sf!: SFComponent; | ||||||
|  |   spuStatus = '1'; | ||||||
|  |   _$expand = false; | ||||||
|  |   data = [{ name1: 1111 }]; | ||||||
|  |   constructor( | ||||||
|  |     public router: Router, | ||||||
|  |     public ar: ActivatedRoute, | ||||||
|  |     public service: RebateManagementService, | ||||||
|  |     private modal: NzModalService, | ||||||
|  |     public shipperservice: ShipperBaseService, | ||||||
|  |   ) {} | ||||||
|  |   /** | ||||||
|  |    * 查询字段个数 | ||||||
|  |    */ | ||||||
|  |   get queryFieldCount(): number { | ||||||
|  |     return Object.keys(this.schema?.properties || {}).length; | ||||||
|  |   } | ||||||
|  |     /** | ||||||
|  |   * 伸缩查询条件 | ||||||
|  |   */ | ||||||
|  |      expandToggle(): void { | ||||||
|  |       this._$expand = !this._$expand; | ||||||
|  |       this.sf?.setValue('/_$expand', this._$expand); | ||||||
|  |     } | ||||||
|  |   /** | ||||||
|  |  * 查询参数 | ||||||
|  |  */ | ||||||
|  |    get reqParams() { | ||||||
|  |     const params: any = Object.assign({}, this.sf?.value || {}); | ||||||
|  |     delete params._$expand; | ||||||
|  |     return {  | ||||||
|  |       ...params, | ||||||
|  |       deadlineTime: { | ||||||
|  |         start: this.sf?.value?.deadlineTime?.[0] || '', | ||||||
|  |         end: this.sf?.value?.deadlineTime?.[1] || '', | ||||||
|  |       }, | ||||||
|  |      }; | ||||||
|  |   } | ||||||
|  |   ngOnInit() { | ||||||
|  |     this.initSF(); | ||||||
|  |     this.initST(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   initSF() { | ||||||
|  |     this.schema = { | ||||||
|  |       properties: { | ||||||
|  |         _$expand: { type: 'boolean', ui: { hidden: true } }, | ||||||
|  |         month: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '时间月份', | ||||||
|  |           format: 'month', | ||||||
|  |         }, | ||||||
|  |         phone: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '合伙人名称' | ||||||
|  |         }, | ||||||
|  |       } | ||||||
|  |     }; | ||||||
|  |     this.ui = { | ||||||
|  |       '*': { | ||||||
|  |         spanLabelFixed: 140, | ||||||
|  |         grid: { span: 8, gutter: 4 } | ||||||
|  |       } | ||||||
|  |     }; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   initST() { | ||||||
|  |     this.columns = [ | ||||||
|  |       { | ||||||
|  |         title: '月份', | ||||||
|  |         index: 'name1' | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         title: '返佣金额(元)', | ||||||
|  |         index: 'name1' | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         title: '合伙人名称', | ||||||
|  |         index: 'name1' | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         title: '实际等级', | ||||||
|  |         index: 'name1' | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         title: '管理费比例', | ||||||
|  |         index: 'name1' | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         title: '返佣时间', | ||||||
|  |         index: 'name1' | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         title: '异常反馈', | ||||||
|  |         render: 'name44' | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         title: '操作', | ||||||
|  |         fixed: 'right', | ||||||
|  |         width: '90px', | ||||||
|  |         className: 'text-left', | ||||||
|  |         buttons: [ | ||||||
|  |           { | ||||||
|  |             text: '明细', | ||||||
|  |             click: _record => this.viewEvaluate(_record), | ||||||
|  |           } | ||||||
|  |         ] | ||||||
|  |       } | ||||||
|  |     ]; | ||||||
|  |   } | ||||||
|  |   /** | ||||||
|  |    *查看明细 | ||||||
|  |    */ | ||||||
|  |    viewEvaluate(item: any) { | ||||||
|  |     const modal = this.modal.create({ | ||||||
|  |       nzTitle: '明细', | ||||||
|  |       nzWidth: 1200, | ||||||
|  |       nzContent: ParterRebateManageMenRecordDetailComponent, | ||||||
|  |       nzComponentParams: { }, | ||||||
|  |       nzFooter: null | ||||||
|  |     }); | ||||||
|  |     modal.afterClose.subscribe((res: any) => { | ||||||
|  |       if (res) { | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  |   /** | ||||||
|  |    *异常反馈 | ||||||
|  |    */ | ||||||
|  |    feedback(item?: any) { | ||||||
|  |        const modal = this.modal.create({ | ||||||
|  |           nzTitle: '异常反馈', | ||||||
|  |           nzWidth: 580, | ||||||
|  |           nzContent: ParterRebateManageMenAbnormalFeedbackComponent, | ||||||
|  |           nzComponentParams: { i: item }, | ||||||
|  |           nzFooter: null | ||||||
|  |         }); | ||||||
|  |         modal.afterClose.subscribe((res: any) => { | ||||||
|  |           if (res) { | ||||||
|  |           } | ||||||
|  |         }); | ||||||
|  |   } | ||||||
|  |   /** | ||||||
|  |    * 重置表单 | ||||||
|  |    */ | ||||||
|  |   resetSF() { | ||||||
|  |     this.sf.reset(); | ||||||
|  |     this.st.load(1); | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,38 @@ | |||||||
|  | <!-- | ||||||
|  |  * @Description  :  | ||||||
|  |  * @Version      : 1.0 | ||||||
|  |  * @Author       : Shiming | ||||||
|  |  * @Date         : 2022-02-24 20:09:49 | ||||||
|  |  * @LastEditors  : Shiming | ||||||
|  |  * @LastEditTime : 2022-03-10 15:10:47 | ||||||
|  |  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\model\\abnormal-feedback\\abnormal-feedback.component.html | ||||||
|  |  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||||
|  | --> | ||||||
|  | <sv-container col="1"> | ||||||
|  |   <sv label="异常反馈"> | ||||||
|  |     <div>有订单有异常请查看 </div> | ||||||
|  |     <div>2022-09-08  00:00:00 </div> | ||||||
|  |   </sv> | ||||||
|  |   <!-- <sv label="异常反馈"> | ||||||
|  |     <p *ngFor="let data of i?.mybidDetailInfo; let index = index"> | ||||||
|  |       <label *ngIf="data?.paymentStatusLabel == '已支付'"> | ||||||
|  |         <span>{{data?.expenseName}}</span> | ||||||
|  |         <span>{{ data.price | number: '0.2-2' }}</span> | ||||||
|  |       </label> | ||||||
|  |     </p> | ||||||
|  |   </sv> --> | ||||||
|  | </sv-container> | ||||||
|  | <div> | ||||||
|  |   <sf | ||||||
|  |   style="margin-left: 20px;" | ||||||
|  |   #sf | ||||||
|  |   [schema]="schema" | ||||||
|  |   [ui]="ui" | ||||||
|  |   [mode]="'edit'" | ||||||
|  |   [button]="'none'" | ||||||
|  | ></sf> | ||||||
|  | </div> | ||||||
|  |       | ||||||
|  |   <div nz-col class="text-center"> | ||||||
|  |   <button nz-button nzType="primary"  (click)="close()">确定</button> | ||||||
|  |   </div> | ||||||
| @ -0,0 +1,6 @@ | |||||||
|  | :host { | ||||||
|  |     [nz-button] { | ||||||
|  |         margin-right: 8px; | ||||||
|  |         margin-bottom: 12px; | ||||||
|  |       } | ||||||
|  | } | ||||||
| @ -0,0 +1,72 @@ | |||||||
|  | /* | ||||||
|  |  * @Description  :  | ||||||
|  |  * @Version      : 1.0 | ||||||
|  |  * @Author       : Shiming | ||||||
|  |  * @Date         : 2022-03-10 14:50:45 | ||||||
|  |  * @LastEditors  : Shiming | ||||||
|  |  * @LastEditTime : 2022-03-10 15:09:51 | ||||||
|  |  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\model\\abnormal-feedback\\abnormal-feedback.component.ts | ||||||
|  |  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||||
|  |  */ | ||||||
|  | import { ModalHelper } from '@delon/theme'; | ||||||
|  | import { Component, OnInit, ViewChild } from '@angular/core'; | ||||||
|  | import { ActivatedRoute, Router } from '@angular/router'; | ||||||
|  | import { STColumn, STComponent, STData, STRequestOptions } from '@delon/abc/st'; | ||||||
|  | import { SFComponent, SFDateWidgetSchema, SFSchema, SFSelectWidgetSchema, SFTextareaWidgetSchema, SFUISchema } from '@delon/form'; | ||||||
|  | import { processSingleSort, ShipperBaseService } from '@shared'; | ||||||
|  | import { NzModalService, NzModalRef } from 'ng-zorro-antd/modal'; | ||||||
|  | import { RebateManagementService } from '../../services/rebate-management.service'; | ||||||
|  | import { NzButtonSize } from 'ng-zorro-antd/button'; | ||||||
|  |  | ||||||
|  | @Component({ | ||||||
|  |   selector: 'app-parter-channel-rebate-management-abnormal-feedback', | ||||||
|  |   templateUrl: './abnormal-feedback.component.html' | ||||||
|  | }) | ||||||
|  | export class ParterRebateManageMenAbnormalFeedbackComponent implements OnInit { | ||||||
|  |   schema: SFSchema = {}; | ||||||
|  |   ui!: SFUISchema; | ||||||
|  |   @ViewChild('sf', { static: false }) | ||||||
|  |   sf!: SFComponent; | ||||||
|  |   i!: any; | ||||||
|  |   data = [{ name1: 1111 }]; | ||||||
|  |   constructor( | ||||||
|  |     public router: Router, | ||||||
|  |     public ar: ActivatedRoute, | ||||||
|  |     public service: RebateManagementService, | ||||||
|  |     private modalService: NzModalService, | ||||||
|  |     public shipperservice: ShipperBaseService, | ||||||
|  |     public modalRef: NzModalRef, | ||||||
|  |   ) {} | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   ngOnInit() { | ||||||
|  |     this.initSF(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   initSF() { | ||||||
|  |     this.schema = { | ||||||
|  |       properties: { | ||||||
|  |         name3: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '回复', | ||||||
|  |           maxLength: 50, | ||||||
|  |           ui: { | ||||||
|  |             widget: 'textarea', | ||||||
|  |             autosize: { minRows: 3, maxRows: 6 }, | ||||||
|  |             placeholder:'请不要超过50个字' | ||||||
|  |           } as SFTextareaWidgetSchema, | ||||||
|  |         }, | ||||||
|  |       } | ||||||
|  |     }; | ||||||
|  |     this.ui = { | ||||||
|  |       '*': { | ||||||
|  |         spanLabelFixed: 60, | ||||||
|  |         grid: { span: 16 }, | ||||||
|  |       } | ||||||
|  |     }; | ||||||
|  |   } | ||||||
|  |   close() { | ||||||
|  |     this.modalRef.destroy() | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
| @ -4,7 +4,7 @@ | |||||||
|  * @Author       : Shiming |  * @Author       : Shiming | ||||||
|  * @Date         : 2022-02-24 20:09:49 |  * @Date         : 2022-02-24 20:09:49 | ||||||
|  * @LastEditors  : Shiming |  * @LastEditors  : Shiming | ||||||
|  * @LastEditTime : 2022-03-09 15:14:50 |  * @LastEditTime : 2022-03-10 14:34:30 | ||||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\model\\record-detail\\record-detail.component.html |  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\model\\record-detail\\record-detail.component.html | ||||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. |  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||||
| --> | --> | ||||||
| @ -23,7 +23,7 @@ | |||||||
|   <st |   <st | ||||||
|     #st |     #st | ||||||
|     [bordered]="true" |     [bordered]="true" | ||||||
|     [data]="data" |     [data]="service.$api_get_listCompliancePage" | ||||||
|     [columns]="columns" |     [columns]="columns" | ||||||
|     [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }" |     [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }" | ||||||
|     [res]="{ reName: { list: 'data.records', total: 'data.total' } }" |     [res]="{ reName: { list: 'data.records', total: 'data.total' } }" | ||||||
| @ -32,3 +32,7 @@ | |||||||
|     [loading]="service.http.loading" |     [loading]="service.http.loading" | ||||||
|   > |   > | ||||||
|   </st> |   </st> | ||||||
|  |   <div>合计:2999.00元</div> | ||||||
|  |   <div nz-col class="text-center"> | ||||||
|  |   <button nz-button nzType="primary" style="width: 150px;" (click)="close()">确定</button> | ||||||
|  |   </div> | ||||||
| @ -0,0 +1,6 @@ | |||||||
|  | :host { | ||||||
|  |     [nz-button] { | ||||||
|  |         margin-right: 8px; | ||||||
|  |         margin-bottom: 12px; | ||||||
|  |       } | ||||||
|  | } | ||||||
| @ -2,10 +2,11 @@ import { ModalHelper } from '@delon/theme'; | |||||||
| import { Component, OnInit, ViewChild } from '@angular/core'; | import { Component, OnInit, ViewChild } from '@angular/core'; | ||||||
| import { ActivatedRoute, Router } from '@angular/router'; | import { ActivatedRoute, Router } from '@angular/router'; | ||||||
| import { STColumn, STComponent, STData, STRequestOptions } from '@delon/abc/st'; | import { STColumn, STComponent, STData, STRequestOptions } from '@delon/abc/st'; | ||||||
| import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form'; | import { SFComponent, SFDateWidgetSchema, SFSchema, SFSelectWidgetSchema, SFUISchema } from '@delon/form'; | ||||||
| import { processSingleSort, ShipperBaseService } from '@shared'; | import { processSingleSort, ShipperBaseService } from '@shared'; | ||||||
| import { NzModalService } from 'ng-zorro-antd/modal'; | import { NzModalService, NzModalRef } from 'ng-zorro-antd/modal'; | ||||||
| import { RebateManagementService } from '../../services/rebate-management.service'; | import { RebateManagementService } from '../../services/rebate-management.service'; | ||||||
|  | import { NzButtonSize } from 'ng-zorro-antd/button'; | ||||||
|  |  | ||||||
| @Component({ | @Component({ | ||||||
|   selector: 'app-parter-channel-rebate-management-record-detail', |   selector: 'app-parter-channel-rebate-management-record-detail', | ||||||
| @ -20,6 +21,7 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit { | |||||||
|   @ViewChild('sf', { static: false }) |   @ViewChild('sf', { static: false }) | ||||||
|   sf!: SFComponent; |   sf!: SFComponent; | ||||||
|   spuStatus = '1'; |   spuStatus = '1'; | ||||||
|  |   size: NzButtonSize = 'large'; | ||||||
|   _$expand = false; |   _$expand = false; | ||||||
|   data = [{ name1: 1111 }]; |   data = [{ name1: 1111 }]; | ||||||
|   constructor( |   constructor( | ||||||
| @ -28,6 +30,7 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit { | |||||||
|     public service: RebateManagementService, |     public service: RebateManagementService, | ||||||
|     private modalService: NzModalService, |     private modalService: NzModalService, | ||||||
|     public shipperservice: ShipperBaseService, |     public shipperservice: ShipperBaseService, | ||||||
|  |     public modalRef: NzModalRef, | ||||||
|   ) {} |   ) {} | ||||||
|   /** |   /** | ||||||
|    * 查询字段个数 |    * 查询字段个数 | ||||||
| @ -50,10 +53,6 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit { | |||||||
|     delete params._$expand; |     delete params._$expand; | ||||||
|     return {  |     return {  | ||||||
|       ...params, |       ...params, | ||||||
|       deadlineTime: { |  | ||||||
|         start: this.sf?.value?.deadlineTime?.[0] || '', |  | ||||||
|         end: this.sf?.value?.deadlineTime?.[1] || '', |  | ||||||
|       }, |  | ||||||
|      }; |      }; | ||||||
|   } |   } | ||||||
|   ngOnInit() { |   ngOnInit() { | ||||||
| @ -64,54 +63,33 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit { | |||||||
|   initSF() { |   initSF() { | ||||||
|     this.schema = { |     this.schema = { | ||||||
|       properties: { |       properties: { | ||||||
|         _$expand: { type: 'boolean', ui: { hidden: true } }, |  | ||||||
|         name: { |  | ||||||
|           type: 'string', |  | ||||||
|           title: '订单号' |  | ||||||
|         }, |  | ||||||
|         phone: { |  | ||||||
|           type: 'string', |  | ||||||
|           title: '付款单号' |  | ||||||
|         }, |  | ||||||
|         phone2: { |  | ||||||
|           type: 'string', |  | ||||||
|           title: '下单客户' |  | ||||||
|         }, |  | ||||||
|         enterpriseInfoId: { |         enterpriseInfoId: { | ||||||
|           type: 'string', |           type: 'string', | ||||||
|           title: '网络货运人', |           title: '网络货运人', | ||||||
|           ui: { |           ui: { | ||||||
|             widget: 'select', |             widget: 'select', | ||||||
|             placeholder: '请选择', |             placeholder: '请选择', | ||||||
|             visibleIf: { |  | ||||||
|               _$expand: (value: boolean) => value |  | ||||||
|             }, |  | ||||||
|             allowClear: true, |             allowClear: true, | ||||||
|             asyncData: () => this.shipperservice.getNetworkFreightForwarder() |             asyncData: () => this.shipperservice.getNetworkFreightForwarder(), | ||||||
|  |             change: (value: any) => { | ||||||
|  |               console.log(value) | ||||||
|  |               this.st.reload() | ||||||
|  |             } | ||||||
|           } |           } | ||||||
|         }, |         }, | ||||||
|         phone3: { |         paymentStatus: { | ||||||
|  |           title: '银行类型', | ||||||
|           type: 'string', |           type: 'string', | ||||||
|           title: '合伙人名称', |  | ||||||
|           ui: { |           ui: { | ||||||
|             visibleIf: { |             widget: 'dict-select', | ||||||
|               _$expand: (value: boolean) => value |             params: { dictKey: 'overall:payment:status' }, | ||||||
|             }, |             containsAllLabel: true, | ||||||
|           } |             change: (value: any) => { | ||||||
|  |               console.log(value) | ||||||
|  |               this.st.reload() | ||||||
|  |             } | ||||||
|  |           } as SFSelectWidgetSchema | ||||||
|         }, |         }, | ||||||
|         deadlineTime: { |  | ||||||
|           title: '时间范围', |  | ||||||
|           type: 'string', |  | ||||||
|           ui: { |  | ||||||
|             widget: 'date', |  | ||||||
|             mode: 'range', |  | ||||||
|             format: 'yyyy-MM-dd', |  | ||||||
|             visibleIf: { |  | ||||||
|               _$expand: (value: boolean) => value |  | ||||||
|             }, |  | ||||||
|             allowClear: true |  | ||||||
|           } as SFDateWidgetSchema |  | ||||||
|         } |  | ||||||
|       } |       } | ||||||
|     }; |     }; | ||||||
|     this.ui = { |     this.ui = { | ||||||
| @ -126,7 +104,7 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit { | |||||||
|     this.columns = [ |     this.columns = [ | ||||||
|       { |       { | ||||||
|         title: '订单号', |         title: '订单号', | ||||||
|         index: 'name1' |         index: 'billCode' | ||||||
|       }, |       }, | ||||||
|       { |       { | ||||||
|         title: '订单金额(元)', |         title: '订单金额(元)', | ||||||
| @ -186,4 +164,8 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit { | |||||||
|     this.sf.reset(); |     this.sf.reset(); | ||||||
|     this.st.load(1); |     this.st.load(1); | ||||||
|   } |   } | ||||||
|  |   close() { | ||||||
|  |     this.modalRef.destroy() | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | |||||||
| @ -1,3 +1,13 @@ | |||||||
|  | /* | ||||||
|  |  * @Description  :  | ||||||
|  |  * @Version      : 1.0 | ||||||
|  |  * @Author       : Shiming | ||||||
|  |  * @Date         : 2022-03-10 11:19:00 | ||||||
|  |  * @LastEditors  : Shiming | ||||||
|  |  * @LastEditTime : 2022-03-10 13:51:05 | ||||||
|  |  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\services\\rebate-management.service.ts | ||||||
|  |  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||||
|  |  */ | ||||||
| import { Injectable, Injector } from '@angular/core'; | import { Injectable, Injector } from '@angular/core'; | ||||||
| import { BaseService } from '@shared'; | import { BaseService } from '@shared'; | ||||||
|  |  | ||||||
| @ -5,7 +15,8 @@ import { BaseService } from '@shared'; | |||||||
|   providedIn: 'root', |   providedIn: 'root', | ||||||
| }) | }) | ||||||
| export class RebateManagementService extends BaseService { | export class RebateManagementService extends BaseService { | ||||||
|  |   // 查询规则抽查列表 | ||||||
|  |   public $api_get_listCompliancePage = '/api/sdc/billRiskOperate/listRiskPage'; | ||||||
|   constructor(public injector: Injector) { |   constructor(public injector: Injector) { | ||||||
|     super(injector); |     super(injector); | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -0,0 +1,64 @@ | |||||||
|  | <!-- | ||||||
|  |  * @Description  : | ||||||
|  |  * @Version      : 1.0 | ||||||
|  |  * @Author       : Shiming | ||||||
|  |  * @Date         : 2022-01-05 20:15:41 | ||||||
|  |  * @LastEditors  : Shiming | ||||||
|  |  * @LastEditTime : 2022-01-18 17:17:19 | ||||||
|  |  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\financial-management\\components\\withdrawals-record\\withdrawals-detail\\withdrawals-detail.component.html | ||||||
|  |  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||||
|  | --> | ||||||
|  | <page-header-wrapper [title]="'入账详情'" [logo]="logo"> | ||||||
|  |   <ng-template #logo> | ||||||
|  |     <button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()"> | ||||||
|  |       <i nz-icon nzType="left" nzTheme="outline"></i> | ||||||
|  |     </button> | ||||||
|  |   </ng-template> | ||||||
|  | </page-header-wrapper> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | <nz-card [nzLoading]="service.http.loading"> | ||||||
|  |   <nz-alert nzType="info" nzMessage="提现信息" class="mb-md"></nz-alert> | ||||||
|  |   <div se-container [labelWidth]="130"> | ||||||
|  |     <se label="网络货运人"> | ||||||
|  |       {{formData?.ltdName}} | ||||||
|  |     </se> | ||||||
|  |     <se label="银行类型"> | ||||||
|  |       {{formData?.bankType==='1'?'平安银行':'浦发银行'}} | ||||||
|  |     </se> | ||||||
|  |     <se label="提现单号"> | ||||||
|  |       {{formData?.refundApplyCode}} | ||||||
|  |     </se> | ||||||
|  |     <se label="账户名称"> | ||||||
|  |       {{formData?.bankAccountName}} | ||||||
|  |     </se> | ||||||
|  |     <se label="提现时间"> | ||||||
|  |       {{formData?.createTime}} | ||||||
|  |     </se> | ||||||
|  |     <se label="虚拟账户"> | ||||||
|  |       {{formData?.virtualAccount}} | ||||||
|  |     </se> | ||||||
|  |     <se label="提现状态"> | ||||||
|  |       {{formData?.refundStatusLabel}} | ||||||
|  |     </se> | ||||||
|  |     <se label="提现金额"> | ||||||
|  |       {{formData?.amount | currency}} | ||||||
|  |     </se> | ||||||
|  |     <se label="银行流水号"> | ||||||
|  |       {{formData?.bankSerialNumber}} | ||||||
|  |     </se> | ||||||
|  |     <se label="提现至银行卡"> | ||||||
|  |       {{formData?.bankCardNumber}} | ||||||
|  |     </se> | ||||||
|  |     <se label="银行回单" col="1"> | ||||||
|  |       <a (click)="downBack()">{{formData?.refundStatus==='3'?'下载回单':'暂无回单'}}</a> | ||||||
|  |     </se> | ||||||
|  |   </div> | ||||||
|  |  | ||||||
|  |   <nz-alert nzType="info" nzMessage="提现进度" class="mb-md mt-md"></nz-alert> | ||||||
|  |   <div nz-row class="mt-xl"> | ||||||
|  |     <div nz-col nzSpan="12" nzOffset="1"> | ||||||
|  |       <app-logistics-time-line [data]="timeLineData"></app-logistics-time-line> | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
|  | </nz-card> | ||||||
| @ -0,0 +1,17 @@ | |||||||
|  | :host::ng-deep { | ||||||
|  |  | ||||||
|  |     .ant-alert-info { | ||||||
|  |         background-color: #f3f3f3; | ||||||
|  |         border          : 1px solid #dbdbdb; | ||||||
|  |  | ||||||
|  |         .ant-alert-message { | ||||||
|  |             color: rgba(0, 0, 0, 0.85); | ||||||
|  |             font-weight: 600; | ||||||
|  |             font-size: 16px; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     .ant-form-item { | ||||||
|  |         margin-bottom: 15px; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,87 @@ | |||||||
|  | import { Component, OnInit } from '@angular/core'; | ||||||
|  | import { ActivatedRoute } from '@angular/router'; | ||||||
|  | import { FreightAccountService } from 'src/app/routes/financial-management/services/freight-account.service'; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @Component({ | ||||||
|  |   selector: 'app-partner-recored-detail', | ||||||
|  |   templateUrl: './detail.component.html', | ||||||
|  |   styleUrls: ['./detail.component.less'] | ||||||
|  | }) | ||||||
|  | export class PartnerRecordedDetailComponent implements OnInit { | ||||||
|  |   formData: any = {}; | ||||||
|  |  | ||||||
|  |   timeLineData: any = []; | ||||||
|  |  | ||||||
|  |   constructor(public service: FreightAccountService, private route: ActivatedRoute) { | ||||||
|  |     const id = route.snapshot.params.id; | ||||||
|  |     this.loadRefundDetail(id); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   ngOnInit(): void { } | ||||||
|  |  | ||||||
|  |   loadRefundDetail(id: string) { | ||||||
|  |     this.service.request(this.service.$api_get_refund_detail, { id }).subscribe(res => { | ||||||
|  |       if (res) { | ||||||
|  |         this.formData = res; | ||||||
|  |         // 处理流程节点数据 | ||||||
|  |         // 流程是否结束 | ||||||
|  |         let isEnd = false; | ||||||
|  |         if (res.successTime) { | ||||||
|  |           isEnd = true; | ||||||
|  |           if (res.refundStatus === '3') { | ||||||
|  |             this.timeLineData.push({ time: res.successTime, value: `到账成功`, color: 'green' }); | ||||||
|  |           } else { | ||||||
|  |             this.timeLineData.push({ time: res.successTime, value: `提现失败`, color: 'red' }); | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |         if (res.agreeTime && res.refundStatus !== '4') { | ||||||
|  |           this.timeLineData.push({ time: res.agreeTime, value: `银行处理中`, color: 'gray' }); | ||||||
|  |         } | ||||||
|  |         if (res.agreeTime) { | ||||||
|  |           if (res.refundStatus === '4') { | ||||||
|  |             isEnd = true; | ||||||
|  |             this.timeLineData.push({ | ||||||
|  |               time: res.agreeTime, | ||||||
|  |               value: `拒绝提现<br/>操作人员:${res.handlerUserIdLabel}`, | ||||||
|  |               color: 'red' | ||||||
|  |             }); | ||||||
|  |           } else { | ||||||
|  |             this.timeLineData.push({ | ||||||
|  |               time: res.agreeTime, | ||||||
|  |               value: `审核通过<br/>操作人员:${res.handlerUserIdLabel}`, | ||||||
|  |               color: 'gray' | ||||||
|  |             }); | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |         if (res.createTime) { | ||||||
|  |           this.timeLineData.push({ | ||||||
|  |             time: res.createTime, | ||||||
|  |             value: `提交提现申请<br/>提现${res.amount}元至${res.bankName}(${res.bankCardNumber})<br/>操作人员:${res.userIdLabel}`, | ||||||
|  |             color: 'gray' | ||||||
|  |           }); | ||||||
|  |         } | ||||||
|  |         if (this.timeLineData?.length > 0 && !isEnd) { | ||||||
|  |           this.timeLineData[0].color = 'green'; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   downBack() { | ||||||
|  |     if (this.formData?.refundStatus !== '3') { | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|  |     this.service.getReceiptUrl(this.formData.receiptUrl, { | ||||||
|  |       bankType: this.formData.bankType, | ||||||
|  |       rmYll: this.formData.userId, | ||||||
|  |       snglFlgCd: this.formData.coreSerNo, | ||||||
|  |       bussType: '06', | ||||||
|  |       ltdId: this.formData.ltdId | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   goBack() { | ||||||
|  |     history.go(-1); | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,72 @@ | |||||||
|  | <page-header-wrapper [title]="''"></page-header-wrapper> | ||||||
|  | <nz-card class="search-box" nzBordered> | ||||||
|  |   <div nz-row nzGutter="8"> | ||||||
|  |     <div nz-col [nzXl]="_$expand ? 24 : 18" [nzLg]="24" [nzSm]="24" [nzXs]="24"> | ||||||
|  |       <sf #sf [schema]="searchSchema" | ||||||
|  |         [ui]="{ '*': { spanLabelFixed: 90,grid: { lg: 8, md: 12, sm: 12, xs: 24,gutter:15 } }}" [compact]="true" | ||||||
|  |         [button]="'none'"></sf> | ||||||
|  |     </div> | ||||||
|  |     <div nz-col [nzXl]="_$expand ? 24 : 6" [nzLg]="24" [nzSm]="24" [nzXs]="24" [class.expend-options]="_$expand" | ||||||
|  |       class="text-right"> | ||||||
|  |       <button nz-button nzType="primary" [nzLoading]="service.http.loading" (click)="st?.load(1)">查询</button> | ||||||
|  |       <button nz-button (click)="resetSF()">重置</button> | ||||||
|  |       <button nz-button> 导出</button> | ||||||
|  |       <button nz-button nzType="link" (click)="expandToggle()"> | ||||||
|  |         {{ !_$expand ? '展开' : '收起' }} | ||||||
|  |         <i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i> | ||||||
|  |       </button> | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
|  | </nz-card> | ||||||
|  |  | ||||||
|  | <nz-card class="content-box" nzBordered> | ||||||
|  |   <nz-tabset [nzTabBarExtraContent]="extraTemplate"> | ||||||
|  |     <nz-tab nzTitle="全部" (nzClick)="changeRefundStatus()"></nz-tab> | ||||||
|  |     <nz-tab nzTitle="待初审" (nzClick)="changeRefundStatus('1')"></nz-tab> | ||||||
|  |     <nz-tab nzTitle="待复核" (nzClick)="changeRefundStatus('2')"></nz-tab> | ||||||
|  |     <nz-tab nzTitle="已入账" (nzClick)="changeRefundStatus('3')"></nz-tab> | ||||||
|  |     <nz-tab nzTitle="已拒绝" (nzClick)="changeRefundStatus('4')"></nz-tab> | ||||||
|  |   </nz-tabset> | ||||||
|  |  | ||||||
|  |   <ng-template #extraTemplate> | ||||||
|  |     <div class="d-flex align-items-center "> | ||||||
|  |       <div class="mr-md"> | ||||||
|  |         已选择 | ||||||
|  |         <strong class="text-red">{{ selectedRows.length }}</strong> 条数据   累计提现 <strong class="text-red">{{ | ||||||
|  |           totalCallNo }}</strong> | ||||||
|  |         <!-- <a *ngIf="totalCallNo > 0" (click)="st.clearCheck()" class="ml-lg">清空</a> --> | ||||||
|  |       </div> | ||||||
|  |       <button nz-button (click)="this.auditAction(null)">审核</button> | ||||||
|  |     </div> | ||||||
|  |   </ng-template> | ||||||
|  |  | ||||||
|  |   <div class="table-content"> | ||||||
|  |     <st #st [data]="service.$api_get_refund_page" [columns]="columns" [req]="{  process: beforeReq }" | ||||||
|  |       [loading]="service.http.loading" [scroll]="{ x:'1200px' }" (change)="stChange($event)" | ||||||
|  |       [res]="{ reName: { list: 'data.records', total: 'data.total' }, process: afterRes }" | ||||||
|  |       [page]="{ show: true,  pageSizes:  [10, 20, 50, 100, 200, 500] }" [loading]="service.http.loading"> | ||||||
|  |       <ng-template st-row="bankCardNumber" let-item let-index="index" let-column="column"> | ||||||
|  |         {{ item.bankName }} <br> {{ item.bankCardNumber }} | ||||||
|  |       </ng-template> | ||||||
|  |     </st> | ||||||
|  |     <div class=" text-md" *ngIf="st?.list?.length !== 0 "> | ||||||
|  |       <span class="mr-md">合伙人数:<label class="text-red-dark font-weight-bold">{{totalInfo?.partnerNum}}</label></span> | ||||||
|  |       <span class="mr-md">入账笔数:<label class="text-red-dark font-weight-bold">{{totalInfo?.count}}</label></span> | ||||||
|  |       <span class="mr-md">开票金额:<label class="text-red-dark font-weight-bold">{{totalInfo?.invoiceAmount}}</label></span> | ||||||
|  |       <span class="mr-md">代缴个税:<label class="text-red-dark font-weight-bold">{{totalInfo?.tax}}</label></span> | ||||||
|  |       <span class="mr-md">入账金额:<label | ||||||
|  |           class="text-red-dark font-weight-bold">{{totalInfo?.recorededAmount}}</label></span> | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
|  | </nz-card> | ||||||
|  |  | ||||||
|  | <ng-template #auditModal> | ||||||
|  |   <div nz-row nzGutter="8"> | ||||||
|  |     <div nz-col nzSpan="24" se-container [labelWidth]="80"> | ||||||
|  |       <se [col]="1" label="备注"> | ||||||
|  |         <textarea nz-input rows="3" [(ngModel)]="msg" placeholder="同意可以不用填写原因 ,拒绝必须说明原因" | ||||||
|  |           style="width: 325px;margin-left: 14px;"></textarea> | ||||||
|  |       </se> | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
|  | </ng-template> | ||||||
| @ -0,0 +1,335 @@ | |||||||
|  | import { Component, OnInit, ViewChild } from '@angular/core'; | ||||||
|  | import { ActivatedRoute, Router } from '@angular/router'; | ||||||
|  | import { STComponent, STColumn, STChange, STRequestOptions, STData } from '@delon/abc/st'; | ||||||
|  | import { SFComponent, SFSchema, SFDateWidgetSchema } from '@delon/form'; | ||||||
|  | import { NzModalService } from 'ng-zorro-antd/modal'; | ||||||
|  | import { FreightAccountService } from 'src/app/routes/financial-management/services/freight-account.service'; | ||||||
|  | import Big from 'src/app/shared/utils/deal-precision'; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @Component({ | ||||||
|  |   selector: 'app-partner-recorded-record', | ||||||
|  |   templateUrl: './record.component.html', | ||||||
|  |   styleUrls: ['../../../../commom/less/box.less', '../../../../commom/less/expend-but.less'] | ||||||
|  | }) | ||||||
|  | export class PartnerRecordedRecordComponent implements OnInit { | ||||||
|  |   @ViewChild('st', { static: true }) st!: STComponent; | ||||||
|  |   @ViewChild('sf', { static: false }) sf!: SFComponent; | ||||||
|  |   @ViewChild('auditModal', { static: false }) auditModal!: any; | ||||||
|  |   @ViewChild('viewReasonModal', { static: false }) viewReasonModal!: any; | ||||||
|  |   columns: STColumn[] = this.initST(); | ||||||
|  |   searchSchema: SFSchema = this.initSF(); | ||||||
|  |   totalInfo: any = { | ||||||
|  |     partnerNum: 34, | ||||||
|  |     count: 98, | ||||||
|  |     invoiceAmount: 978239.98, | ||||||
|  |     tax: 9878.00, | ||||||
|  |     recorededAmount: 728698.98 | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   _$expand = false; | ||||||
|  |  | ||||||
|  |   selectedRows: any[] = []; | ||||||
|  |   totalCallNo = 0; | ||||||
|  |   refundStatus: any = ''; | ||||||
|  |  | ||||||
|  |   msg = ''; | ||||||
|  |   constructor(public service: FreightAccountService, private nzModalService: NzModalService, private router: Router, public ar: ActivatedRoute) { } | ||||||
|  |  | ||||||
|  |   ngOnInit(): void { } | ||||||
|  |  | ||||||
|  |   beforeReq = (requestOptions: STRequestOptions) => { | ||||||
|  |     if (this.sf) { | ||||||
|  |       Object.assign(requestOptions.body, { | ||||||
|  |         ...this.sf.value, | ||||||
|  |         createTime: { | ||||||
|  |           start: this.sf.value.createTime?.[0] || '', | ||||||
|  |           end: this.sf.value.createTime?.[1] || '' | ||||||
|  |         }, | ||||||
|  |         refundStatus: this.refundStatus || null | ||||||
|  |       }); | ||||||
|  |     } | ||||||
|  |     return requestOptions; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   afterRes = (data: any[], rawData?: any) => { | ||||||
|  |     data = data.map(node => ({ ...node, disabled: node.refundStatus !== '1' })); | ||||||
|  |     return data; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   stChange(e: STChange): void { | ||||||
|  |     if (e.type === 'checkbox') { | ||||||
|  |       const checkRows = (e.checkbox as STData[]) || []; | ||||||
|  |       //判断当前页是否有选中的行 | ||||||
|  |       if (checkRows.length === 0) { | ||||||
|  |         // 当前页没有存在已勾选的行,移除之前所记录的当前页的行 | ||||||
|  |         const stList = this.st.list; | ||||||
|  |         stList.forEach(item => { | ||||||
|  |           this.selectedRows = this.selectedRows.filter((e: any) => e.id !== item.id); | ||||||
|  |         }) | ||||||
|  |       } else { | ||||||
|  |         //添加新增的行 | ||||||
|  |         checkRows.forEach((item: any) => { | ||||||
|  |           const newSelectedList = this.selectedRows.filter((r: any) => r.id === item.id); | ||||||
|  |           if (newSelectedList.length === 0) { | ||||||
|  |             this.selectedRows.push(item); | ||||||
|  |  | ||||||
|  |           } | ||||||
|  |         }) | ||||||
|  |         // 移除取消选中的行 | ||||||
|  |         const stList = this.st.list; | ||||||
|  |         stList.forEach(item => { | ||||||
|  |           if (!item.checked) { | ||||||
|  |             const index = this.selectedRows.findIndex(_item => item.id === _item.id); | ||||||
|  |             if (index !== -1) this.selectedRows.splice(index, 1); | ||||||
|  |           } | ||||||
|  |         }) | ||||||
|  |       } | ||||||
|  |       let totalCallNo = 0; | ||||||
|  |       this.selectedRows.forEach((item => { | ||||||
|  |         totalCallNo = new Big(this.totalCallNo).plus(item?.amount).parse(); | ||||||
|  |       })); | ||||||
|  |       this.totalCallNo = totalCallNo; | ||||||
|  |     } else if (e.type === 'loaded') { | ||||||
|  |       // 页面加载时勾选 | ||||||
|  |       (e?.loaded || []).forEach((r) => { | ||||||
|  |         this.selectedRows.forEach((x) => { | ||||||
|  |           if (x.id === r.id) { | ||||||
|  |             r.checked = true; | ||||||
|  |           } | ||||||
|  |         }); | ||||||
|  |       }); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   changeRefundStatus(status?: string) { | ||||||
|  |     this.refundStatus = status || null; | ||||||
|  |     this.st.load(1); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   auditAction(item?: any) { | ||||||
|  |     this.msg = ''; | ||||||
|  |     let params: Array<string> = []; | ||||||
|  |     if (item) { | ||||||
|  |       params = [item.id]; | ||||||
|  |     } else { | ||||||
|  |       params = this.selectedRows.map(node => node.id); | ||||||
|  |     } | ||||||
|  |     const modal = this.nzModalService.create({ | ||||||
|  |       nzTitle: '审核', | ||||||
|  |       nzContent: this.auditModal, | ||||||
|  |       nzFooter: [ | ||||||
|  |         { | ||||||
|  |           label: '备注', | ||||||
|  |           type: 'default', | ||||||
|  |           onClick: () => { | ||||||
|  |             this.service | ||||||
|  |               .request(this.service.$api_disagree_refund, { | ||||||
|  |                 refundApplicationId: params, | ||||||
|  |                 msg: this.msg | ||||||
|  |               }) | ||||||
|  |               .subscribe(res => { | ||||||
|  |                 if (res) { | ||||||
|  |                   this.service.msgSrv.success('审核拒绝成功'); | ||||||
|  |                   modal.destroy(); | ||||||
|  |                   this.st.load(1); | ||||||
|  |                 } | ||||||
|  |               }); | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           label: '通过', | ||||||
|  |           type: 'primary', | ||||||
|  |           onClick: () => { | ||||||
|  |             this.service | ||||||
|  |               .request(this.service.$api_agree_refund, { | ||||||
|  |                 refundApplicationId: params, | ||||||
|  |                 msg: this.msg | ||||||
|  |               }) | ||||||
|  |               .subscribe(res => { | ||||||
|  |                 if (res) { | ||||||
|  |                   this.service.msgSrv.success('审核通过成功'); | ||||||
|  |                   modal.destroy(); | ||||||
|  |                   this.st.load(1); | ||||||
|  |                 } | ||||||
|  |               }); | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       ] | ||||||
|  |     }); | ||||||
|  |     modal.afterClose.subscribe(res => { | ||||||
|  |       this.st.load(); | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   showReason(item: any) { | ||||||
|  |     const modal = this.nzModalService.create({ | ||||||
|  |       nzTitle: '查看原因', | ||||||
|  |       nzContent: item?.rejectionCause || item?.failCause, | ||||||
|  |       nzFooter: [ | ||||||
|  |         { | ||||||
|  |           label: '关闭', | ||||||
|  |           type: 'primary', | ||||||
|  |           onClick: () => { | ||||||
|  |             modal.destroy(); | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       ] | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 重置表单 | ||||||
|  |    */ | ||||||
|  |   resetSF() { | ||||||
|  |     this.sf.reset(); | ||||||
|  |     this._$expand = false; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 伸缩查询条件 | ||||||
|  |    */ | ||||||
|  |   expandToggle() { | ||||||
|  |     this._$expand = !this._$expand; | ||||||
|  |     this.sf?.setValue('/expand', this._$expand); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   private initSF(): SFSchema { | ||||||
|  |     return { | ||||||
|  |       properties: { | ||||||
|  |         expand: { | ||||||
|  |           type: 'boolean', | ||||||
|  |           ui: { | ||||||
|  |             hidden: true | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         refundApplyCode: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '提现单号', | ||||||
|  |           ui: { | ||||||
|  |             placeholder: '请输入' | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         refundStatus: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '提现状态', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'dict-select', | ||||||
|  |             params: { dictKey: 'refund:apply:status' }, | ||||||
|  |             placeholder: '请选择' | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         createTime: { | ||||||
|  |           title: '提现时间', | ||||||
|  |           type: 'string', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'sl-from-to-search', | ||||||
|  |             format: 'yyyy-MM-dd', | ||||||
|  |             placeholder: '请选择', | ||||||
|  |             nzShowTime: true | ||||||
|  |           } as SFDateWidgetSchema | ||||||
|  |         }, | ||||||
|  |         bankAccountName: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '账户名称', | ||||||
|  |           ui: { | ||||||
|  |             placeholder: '请输入', | ||||||
|  |             visibleIf: { | ||||||
|  |               expand: (value: boolean) => value | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         accountType: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '账户类型', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'dict-select', | ||||||
|  |             params: { dictKey: 'bank:type' }, | ||||||
|  |             placeholder: '请选择', | ||||||
|  |             visibleIf: { | ||||||
|  |               expand: (value: boolean) => value | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         ltdId: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '网络货运人', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'select', | ||||||
|  |             placeholder: '请选择', | ||||||
|  |             allowClear: true, | ||||||
|  |             asyncData: () => this.service.getNetworkFreightForwarder(), | ||||||
|  |             visibleIf: { | ||||||
|  |               expand: (value: boolean) => value | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         bankType: { | ||||||
|  |           type: 'string', | ||||||
|  |           title: '银行类型', | ||||||
|  |           ui: { | ||||||
|  |             widget: 'dict-select', | ||||||
|  |             params: { dictKey: 'bankname:type' }, | ||||||
|  |             placeholder: '请输入', | ||||||
|  |             visibleIf: { | ||||||
|  |               expand: (value: boolean) => value | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   private initST(): STColumn[] { | ||||||
|  |     return [ | ||||||
|  |       { title: '', index: 'key', type: 'checkbox', className: 'text-center' }, | ||||||
|  |       { title: '账户名称', index: 'createTime', width: 180, className: 'text-center' }, | ||||||
|  |       { title: '虚拟账户', index: 'virtualAccount', width: 180, className: 'text-center' }, | ||||||
|  |       { title: '入账单号', index: 'refundApplyCode', width: 180, className: 'text-center' }, | ||||||
|  |       { title: '网络货运人', index: 'ltdName', width: 220, className: 'text-center' }, | ||||||
|  |       { | ||||||
|  |         title: '开票金额', | ||||||
|  |         index: 'amount', | ||||||
|  |         width: 150, | ||||||
|  |         type: 'widget', | ||||||
|  |         className: 'text-right', | ||||||
|  |         widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.amount }) } | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         title: '代缴个税', | ||||||
|  |         index: 'amount', | ||||||
|  |         width: 150, | ||||||
|  |         type: 'widget', | ||||||
|  |         className: 'text-right', | ||||||
|  |         widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.amount }) } | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         title: '入账金额', | ||||||
|  |         index: 'amount', | ||||||
|  |         width: 150, | ||||||
|  |         type: 'widget', | ||||||
|  |         className: 'text-right', | ||||||
|  |         widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.amount }) } | ||||||
|  |       }, | ||||||
|  |  | ||||||
|  |       { title: '提交时间', index: 'bankSerialNumber', width: 160, className: 'text-center' }, | ||||||
|  |       { title: '入账状态', index: 'refundStatusLabel', width: 100, className: 'text-center' }, | ||||||
|  |       { | ||||||
|  |         title: '操作', | ||||||
|  |         fixed: 'right', | ||||||
|  |         width: '110px', | ||||||
|  |         buttons: [ | ||||||
|  |           { | ||||||
|  |             text: '审核', | ||||||
|  |             iif: item => item.refundStatus === '1', | ||||||
|  |             click: item => this.auditAction(item) | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             text: '详情', | ||||||
|  |             click: item => this.router.navigate(['./detail/' + item.id], { relativeTo: this.ar }) | ||||||
|  |           } | ||||||
|  |         ] | ||||||
|  |       } | ||||||
|  |     ]; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -278,7 +278,6 @@ | |||||||
|         <label nz-checkbox [ngModel]="!!!detailData.legalPersonIdentityVO.validEndTime" |         <label nz-checkbox [ngModel]="!!!detailData.legalPersonIdentityVO.validEndTime" | ||||||
|           (ngModelChange)="$event?detailData.legalPersonIdentityVO.validEndTime='':''" class="ml-sm">长期</label> |           (ngModelChange)="$event?detailData.legalPersonIdentityVO.validEndTime='':''" class="ml-sm">长期</label> | ||||||
|       </ng-container> |       </ng-container> | ||||||
|  |  | ||||||
|     </sv> |     </sv> | ||||||
|     <sv label="身份证照" col="1"> |     <sv label="身份证照" col="1"> | ||||||
|       <div class="d-flex"> |       <div class="d-flex"> | ||||||
|  | |||||||
| @ -508,7 +508,12 @@ | |||||||
|         { |         { | ||||||
|           "text": "合伙人管理", |           "text": "合伙人管理", | ||||||
|           "icon": "anticon anticon-dashboard", |           "icon": "anticon anticon-dashboard", | ||||||
|           "children": [{ |           "children": [ | ||||||
|  |             { | ||||||
|  |               "text": "合伙人列表", | ||||||
|  |               "link": "/partner/partner-list" | ||||||
|  |             }, | ||||||
|  |             { | ||||||
|               "text": "业务统计", |               "text": "业务统计", | ||||||
|               "link": "/partner/business-statistics/index" |               "link": "/partner/business-statistics/index" | ||||||
|             }, |             }, | ||||||
| @ -517,7 +522,7 @@ | |||||||
|               "group": true, |               "group": true, | ||||||
|               "children": [{ |               "children": [{ | ||||||
|                   "text": "返佣配置", |                   "text": "返佣配置", | ||||||
|                   "link": "/partner/rebate/" |                   "link": "/partner/rebate/setting" | ||||||
|                 }, |                 }, | ||||||
|                 { |                 { | ||||||
|                   "text": "返佣明细", |                   "text": "返佣明细", | ||||||
| @ -542,11 +547,11 @@ | |||||||
|               "group": true, |               "group": true, | ||||||
|               "children": [{ |               "children": [{ | ||||||
|                   "text": "账户管理", |                   "text": "账户管理", | ||||||
|                   "link": "/partner/account-management/list" |                   "link": "/partner/account-management/am" | ||||||
|                 }, |                 }, | ||||||
|                 { |                 { | ||||||
|                   "text": "账户明细", |                   "text": "账户明细", | ||||||
|                   "link": "/partner/account-management/account-detail", |                   "link": "/partner/account-management/am/detail/:id", | ||||||
|                   "hide": true |                   "hide": true | ||||||
|                 }, |                 }, | ||||||
|                 { |                 { | ||||||
| @ -555,7 +560,12 @@ | |||||||
|                 }, |                 }, | ||||||
|                 { |                 { | ||||||
|                   "text": "提现详情", |                   "text": "提现详情", | ||||||
|                   "link": "/partner/account-management/withdraw-record/:id", |                   "link": "/partner/account-management/withdraw-record/detail/:id", | ||||||
|  |                   "hide": true | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                   "text": "待入账明细", | ||||||
|  |                   "link": "/partner/account-management/am/recorded/detail/:id", | ||||||
|                   "hide": true |                   "hide": true | ||||||
|                 } |                 } | ||||||
|               ] |               ] | ||||||
| @ -564,16 +574,25 @@ | |||||||
|               "text": "客户认领审核", |               "text": "客户认领审核", | ||||||
|               "link": "/partner/claim-audit/list", |               "link": "/partner/claim-audit/list", | ||||||
|               "children": [{ |               "children": [{ | ||||||
|                 "text": "合伙人客户认领详情", |                   "text": "合伙人客户认领详情", | ||||||
|                 "link": "/partner/claim-audit/partner-detail", |                   "link": "/partner/claim-audit/partner-detail", | ||||||
|                 "hide": true |                   "hide": true | ||||||
|               }, |                 }, | ||||||
|               { |                 { | ||||||
|                 "text": "渠道销售客户认领详情", |                   "text": "渠道销售客户认领详情", | ||||||
|                 "link": "/partner/claim-audit/channel-detail", |                   "link": "/partner/claim-audit/channel-detail", | ||||||
|                 "hide": true |                   "hide": true | ||||||
|               } |                 } | ||||||
|             ] |               ] | ||||||
|  |             }, | ||||||
|  |             { | ||||||
|  |               "text": "入账记录", | ||||||
|  |               "link": "/partner/recorded/record" | ||||||
|  |             }, | ||||||
|  |             { | ||||||
|  |               "text": "入账详情", | ||||||
|  |               "link": "/partner/recorded/record/:id", | ||||||
|  |               "hide": true | ||||||
|             }, |             }, | ||||||
|             { |             { | ||||||
|               "text": "轮播图管理", |               "text": "轮播图管理", | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user