From 1a353f4c93b4725035cdcdf5ea252c2e8fb21e67 Mon Sep 17 00:00:00 2001 From: wangshiming Date: Thu, 10 Mar 2022 14:15:58 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../record-detail.component.html | 8 ++- .../record-detail.component.less | 6 ++ .../record-detail/record-detail.component.ts | 68 +++++++------------ .../services/rebate-management.service.ts | 13 +++- 4 files changed, 49 insertions(+), 46 deletions(-) create mode 100644 src/app/routes/partner/rebate-management/model/record-detail/record-detail.component.less diff --git a/src/app/routes/partner/rebate-management/model/record-detail/record-detail.component.html b/src/app/routes/partner/rebate-management/model/record-detail/record-detail.component.html index 65099230..4f7723fe 100644 --- a/src/app/routes/partner/rebate-management/model/record-detail/record-detail.component.html +++ b/src/app/routes/partner/rebate-management/model/record-detail/record-detail.component.html @@ -4,7 +4,7 @@ * @Author : Shiming * @Date : 2022-02-24 20:09:49 * @LastEditors : Shiming - * @LastEditTime : 2022-03-09 15:14:50 + * @LastEditTime : 2022-03-10 14:05:25 * @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\model\\record-detail\\record-detail.component.html * Copyright (C) 2022 huzhenhong. All rights reserved. --> @@ -23,7 +23,7 @@ +
合计:2999.00元
+
+ +
\ No newline at end of file diff --git a/src/app/routes/partner/rebate-management/model/record-detail/record-detail.component.less b/src/app/routes/partner/rebate-management/model/record-detail/record-detail.component.less new file mode 100644 index 00000000..52b47a0e --- /dev/null +++ b/src/app/routes/partner/rebate-management/model/record-detail/record-detail.component.less @@ -0,0 +1,6 @@ +:host { + [nz-button] { + margin-right: 8px; + margin-bottom: 12px; + } +} \ No newline at end of file diff --git a/src/app/routes/partner/rebate-management/model/record-detail/record-detail.component.ts b/src/app/routes/partner/rebate-management/model/record-detail/record-detail.component.ts index b5c70083..1efde6a2 100644 --- a/src/app/routes/partner/rebate-management/model/record-detail/record-detail.component.ts +++ b/src/app/routes/partner/rebate-management/model/record-detail/record-detail.component.ts @@ -2,10 +2,11 @@ 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 { SFComponent, SFDateWidgetSchema, SFSchema, SFSelectWidgetSchema, SFUISchema } from '@delon/form'; 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 { NzButtonSize } from 'ng-zorro-antd/button'; @Component({ selector: 'app-parter-channel-rebate-management-record-detail', @@ -20,6 +21,7 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit { @ViewChild('sf', { static: false }) sf!: SFComponent; spuStatus = '1'; + size: NzButtonSize = 'large'; _$expand = false; data = [{ name1: 1111 }]; constructor( @@ -28,6 +30,7 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit { public service: RebateManagementService, private modalService: NzModalService, public shipperservice: ShipperBaseService, + public modalRef: NzModalRef, ) {} /** * 查询字段个数 @@ -50,10 +53,6 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit { delete params._$expand; return { ...params, - deadlineTime: { - start: this.sf?.value?.deadlineTime?.[0] || '', - end: this.sf?.value?.deadlineTime?.[1] || '', - }, }; } ngOnInit() { @@ -64,54 +63,33 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit { initSF() { this.schema = { properties: { - _$expand: { type: 'boolean', ui: { hidden: true } }, - name: { - type: 'string', - title: '订单号' - }, - phone: { - type: 'string', - title: '付款单号' - }, - phone2: { - type: 'string', - title: '下单客户' - }, enterpriseInfoId: { type: 'string', title: '网络货运人', ui: { widget: 'select', placeholder: '请选择', - visibleIf: { - _$expand: (value: boolean) => value - }, allowClear: true, - asyncData: () => this.shipperservice.getNetworkFreightForwarder() + asyncData: () => this.shipperservice.getNetworkFreightForwarder(), + change: (value: any) => { + console.log(value) + this.st.reload() + } } }, - phone3: { + paymentStatus: { + title: '银行类型', type: 'string', - title: '合伙人名称', ui: { - visibleIf: { - _$expand: (value: boolean) => value - }, - } + widget: 'dict-select', + 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 = { @@ -126,7 +104,7 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit { this.columns = [ { title: '订单号', - index: 'name1' + index: 'billCode' }, { title: '订单金额(元)', @@ -186,4 +164,8 @@ export class ParterRebateManageMenRecordDetailComponent implements OnInit { this.sf.reset(); this.st.load(1); } + close() { + this.modalRef.destroy() + } } + diff --git a/src/app/routes/partner/rebate-management/services/rebate-management.service.ts b/src/app/routes/partner/rebate-management/services/rebate-management.service.ts index 5430876a..d3a7a412 100644 --- a/src/app/routes/partner/rebate-management/services/rebate-management.service.ts +++ b/src/app/routes/partner/rebate-management/services/rebate-management.service.ts @@ -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 { BaseService } from '@shared'; @@ -5,7 +15,8 @@ import { BaseService } from '@shared'; providedIn: 'root', }) export class RebateManagementService extends BaseService { - + // 查询规则抽查列表 + public $api_get_listCompliancePage = '/api/sdc/billRiskOperate/listRiskPage'; constructor(public injector: Injector) { super(injector); } From 7406f1234aba58daa21be3f01c5d83f3ca17deb9 Mon Sep 17 00:00:00 2001 From: wangshiming Date: Thu, 10 Mar 2022 14:36:27 +0800 Subject: [PATCH 02/10] fix bug --- .../model/record-detail/record-detail.component.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/routes/partner/rebate-management/model/record-detail/record-detail.component.html b/src/app/routes/partner/rebate-management/model/record-detail/record-detail.component.html index 4f7723fe..63f8290c 100644 --- a/src/app/routes/partner/rebate-management/model/record-detail/record-detail.component.html +++ b/src/app/routes/partner/rebate-management/model/record-detail/record-detail.component.html @@ -4,7 +4,7 @@ * @Author : Shiming * @Date : 2022-02-24 20:09:49 * @LastEditors : Shiming - * @LastEditTime : 2022-03-10 14:05:25 + * @LastEditTime : 2022-03-10 14:34:30 * @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\model\\record-detail\\record-detail.component.html * Copyright (C) 2022 huzhenhong. All rights reserved. --> @@ -34,5 +34,5 @@
合计:2999.00元
- +
\ No newline at end of file From 15937316dd9edf895254cc379507bdb6f86bff4b Mon Sep 17 00:00:00 2001 From: wangshiming Date: Thu, 10 Mar 2022 15:40:52 +0800 Subject: [PATCH 03/10] fix bug --- .../routes/partner/partner-routing.module.ts | 2 + src/app/routes/partner/partner.module.ts | 8 +- .../rebate-record.component.html | 5 +- .../rebate-record/rebate-record.component.ts | 39 +++- .../rebate-setting.component.html | 48 +++++ .../rebate-setting.component.ts | 172 ++++++++++++++++++ .../abnormal-feedback.component.html | 38 ++++ .../abnormal-feedback.component.less | 6 + .../abnormal-feedback.component.ts | 72 ++++++++ src/assets/mocks/menu-data.json | 2 +- 10 files changed, 379 insertions(+), 13 deletions(-) create mode 100644 src/app/routes/partner/rebate-management/components/rebate-setting/rebate-setting.component.html create mode 100644 src/app/routes/partner/rebate-management/components/rebate-setting/rebate-setting.component.ts create mode 100644 src/app/routes/partner/rebate-management/model/abnormal-feedback/abnormal-feedback.component.html create mode 100644 src/app/routes/partner/rebate-management/model/abnormal-feedback/abnormal-feedback.component.less create mode 100644 src/app/routes/partner/rebate-management/model/abnormal-feedback/abnormal-feedback.component.ts diff --git a/src/app/routes/partner/partner-routing.module.ts b/src/app/routes/partner/partner-routing.module.ts index b22dabab..9970f1d9 100644 --- a/src/app/routes/partner/partner-routing.module.ts +++ b/src/app/routes/partner/partner-routing.module.ts @@ -30,6 +30,7 @@ import { PartnerAccountManagementAccountDetailComponent } from './account-manage import { PartnerAccountManagementRecordedDetailComponent } from './account-management/components/recorded-detail/recorded-detail.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 { ParterRebateManageMentSettingComponent } from './rebate-management/components/rebate-setting/rebate-setting.component'; const routes: Routes = [ { @@ -65,6 +66,7 @@ const routes: Routes = [ children: [ { path: 'particulars', component: ParterRebateManageMentParticularsComponent }, { path: 'record', component: ParterRebateManageMentRecordComponent }, + { path: 'setting', component: ParterRebateManageMentSettingComponent }, ] }, { diff --git a/src/app/routes/partner/partner.module.ts b/src/app/routes/partner/partner.module.ts index 0d94b9ef..bd2df357 100644 --- a/src/app/routes/partner/partner.module.ts +++ b/src/app/routes/partner/partner.module.ts @@ -40,6 +40,8 @@ import { PartnerAccountManagementRecordedDetailComponent } from './account-manag 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 { ParterRebateManageMentRecordComponent } from './rebate-management/components/rebate-record/rebate-record.component'; +import { ParterRebateManageMenAbnormalFeedbackComponent } from './rebate-management/model/abnormal-feedback/abnormal-feedback.component'; +import { ParterRebateManageMentSettingComponent } from './rebate-management/components/rebate-setting/rebate-setting.component'; const COMPONENTS: any[] = [ PartnerBusinessStatisticsIndexComponent, @@ -69,11 +71,13 @@ const COMPONENTS: any[] = [ PartnerAccountManagementAccountDetailComponent, PartnerAccountManagementRecordedDetailComponent, PartnerAccountManagementWithdrawalsRecordComponent, - PartnerAccountManagementWithdrawalsDetailComponent + PartnerAccountManagementWithdrawalsDetailComponent, + ParterRebateManageMenAbnormalFeedbackComponent, + ParterRebateManageMentSettingComponent ]; @NgModule({ declarations: [...COMPONENTS], imports: [CommonModule, PartnerRoutingModule, SharedModule] }) -export class PartnerModule { } +export class PartnerModule {} diff --git a/src/app/routes/partner/rebate-management/components/rebate-record/rebate-record.component.html b/src/app/routes/partner/rebate-management/components/rebate-record/rebate-record.component.html index 9ddc7ac3..50b366ea 100644 --- a/src/app/routes/partner/rebate-management/components/rebate-record/rebate-record.component.html +++ b/src/app/routes/partner/rebate-management/components/rebate-record/rebate-record.component.html @@ -4,7 +4,7 @@ * @Author : Shiming * @Date : 2022-02-24 20:09:49 * @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 * Copyright (C) 2022 huzhenhong. All rights reserved. --> @@ -41,5 +41,8 @@ [loadingDelay]="500" [loading]="service.http.loading" > + +
1223
+
diff --git a/src/app/routes/partner/rebate-management/components/rebate-record/rebate-record.component.ts b/src/app/routes/partner/rebate-management/components/rebate-record/rebate-record.component.ts index 54e8e57b..1f98579d 100644 --- a/src/app/routes/partner/rebate-management/components/rebate-record/rebate-record.component.ts +++ b/src/app/routes/partner/rebate-management/components/rebate-record/rebate-record.component.ts @@ -7,6 +7,7 @@ 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-record', @@ -27,9 +28,8 @@ export class ParterRebateManageMentRecordComponent implements OnInit { public router: Router, public ar: ActivatedRoute, public service: RebateManagementService, - private modalService: NzModalService, + private modal: NzModalService, public shipperservice: ShipperBaseService, - private modal: ModalHelper ) {} /** * 查询字段个数 @@ -114,7 +114,7 @@ export class ParterRebateManageMentRecordComponent implements OnInit { }, { title: '异常反馈', - index: 'name1' + render: 'name44' }, { title: '操作', @@ -131,15 +131,36 @@ export class ParterRebateManageMentRecordComponent implements OnInit { ]; } /** - *查看详情 + *查看明细 */ viewEvaluate(item: any) { - // this.modalService - this.modal.createStatic(ParterRebateManageMenRecordDetailComponent, {i:item}).subscribe((res: boolean)=> { - if(res) { - + 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) { + } + }); } /** * 重置表单 diff --git a/src/app/routes/partner/rebate-management/components/rebate-setting/rebate-setting.component.html b/src/app/routes/partner/rebate-management/components/rebate-setting/rebate-setting.component.html new file mode 100644 index 00000000..50b366ea --- /dev/null +++ b/src/app/routes/partner/rebate-management/components/rebate-setting/rebate-setting.component.html @@ -0,0 +1,48 @@ + + + +
+ + +
+ + + +
+
+
+ + + + + +
1223
+
+
+
diff --git a/src/app/routes/partner/rebate-management/components/rebate-setting/rebate-setting.component.ts b/src/app/routes/partner/rebate-management/components/rebate-setting/rebate-setting.component.ts new file mode 100644 index 00000000..929b96d1 --- /dev/null +++ b/src/app/routes/partner/rebate-management/components/rebate-setting/rebate-setting.component.ts @@ -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); + } +} diff --git a/src/app/routes/partner/rebate-management/model/abnormal-feedback/abnormal-feedback.component.html b/src/app/routes/partner/rebate-management/model/abnormal-feedback/abnormal-feedback.component.html new file mode 100644 index 00000000..cef84c44 --- /dev/null +++ b/src/app/routes/partner/rebate-management/model/abnormal-feedback/abnormal-feedback.component.html @@ -0,0 +1,38 @@ + + + +
有订单有异常请查看
+
2022-09-08 00:00:00
+
+ +
+
+ +
+ +
+ +
\ No newline at end of file diff --git a/src/app/routes/partner/rebate-management/model/abnormal-feedback/abnormal-feedback.component.less b/src/app/routes/partner/rebate-management/model/abnormal-feedback/abnormal-feedback.component.less new file mode 100644 index 00000000..52b47a0e --- /dev/null +++ b/src/app/routes/partner/rebate-management/model/abnormal-feedback/abnormal-feedback.component.less @@ -0,0 +1,6 @@ +:host { + [nz-button] { + margin-right: 8px; + margin-bottom: 12px; + } +} \ No newline at end of file diff --git a/src/app/routes/partner/rebate-management/model/abnormal-feedback/abnormal-feedback.component.ts b/src/app/routes/partner/rebate-management/model/abnormal-feedback/abnormal-feedback.component.ts new file mode 100644 index 00000000..3d8c1fd4 --- /dev/null +++ b/src/app/routes/partner/rebate-management/model/abnormal-feedback/abnormal-feedback.component.ts @@ -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() + } +} + diff --git a/src/assets/mocks/menu-data.json b/src/assets/mocks/menu-data.json index 473d4c2f..85b1c19b 100644 --- a/src/assets/mocks/menu-data.json +++ b/src/assets/mocks/menu-data.json @@ -517,7 +517,7 @@ "group": true, "children": [{ "text": "返佣配置", - "link": "/partner/rebate/" + "link": "/partner/rebate/setting" }, { "text": "返佣明细", From 8c06e1f9de9ccb70cf163b04fc9bb98e6efbdabc Mon Sep 17 00:00:00 2001 From: Taric Xin Date: Thu, 10 Mar 2022 16:12:36 +0800 Subject: [PATCH 04/10] edit --- proxy.conf.js | 2 +- src/app/core/guards/auth.guard.ts | 2 - src/app/global-config.module.ts | 2 +- .../index/partner-list.component.html | 95 +++++ .../index/partner-list.component.less | 0 .../index/partner-list.component.ts | 298 +++++++++++++++ .../partner-audit-modal.component.html | 7 + .../partner-audit-modal.component.less | 0 .../partner-audit-modal.component.ts | 117 ++++++ .../partner-detail.component.html | 342 ++++++++++++++++++ .../partner-detail.component.less | 30 ++ .../partner-detail.component.ts | 337 +++++++++++++++++ .../services/partner-list.service.ts | 26 ++ .../routes/partner/partner-routing.module.ts | 21 +- src/app/routes/partner/partner.module.ts | 15 +- src/assets/mocks/menu-data.json | 7 +- 16 files changed, 1286 insertions(+), 15 deletions(-) create mode 100644 src/app/routes/partner/partner-list/components/index/partner-list.component.html create mode 100644 src/app/routes/partner/partner-list/components/index/partner-list.component.less create mode 100644 src/app/routes/partner/partner-list/components/index/partner-list.component.ts create mode 100644 src/app/routes/partner/partner-list/components/partner-audit-modal/partner-audit-modal.component.html create mode 100644 src/app/routes/partner/partner-list/components/partner-audit-modal/partner-audit-modal.component.less create mode 100644 src/app/routes/partner/partner-list/components/partner-audit-modal/partner-audit-modal.component.ts create mode 100644 src/app/routes/partner/partner-list/components/partner-detail/partner-detail.component.html create mode 100644 src/app/routes/partner/partner-list/components/partner-detail/partner-detail.component.less create mode 100644 src/app/routes/partner/partner-list/components/partner-detail/partner-detail.component.ts create mode 100644 src/app/routes/partner/partner-list/services/partner-list.service.ts diff --git a/proxy.conf.js b/proxy.conf.js index 31995def..822b7622 100644 --- a/proxy.conf.js +++ b/proxy.conf.js @@ -20,7 +20,7 @@ module.exports = { // } '//api': { target: { - host: 'tms-api-test.eascs.com', + host: 'tms-api-dev.eascs.com', protocol: 'https:', port: 443 }, diff --git a/src/app/core/guards/auth.guard.ts b/src/app/core/guards/auth.guard.ts index da4d1331..b5a30a58 100644 --- a/src/app/core/guards/auth.guard.ts +++ b/src/app/core/guards/auth.guard.ts @@ -38,8 +38,6 @@ export class AuthGuard extends ACLGuard { } private handle(route: ActivatedRouteSnapshot, state: RouterStateSnapshot, type: 1 | 2, router?: string): Observable { - console.log(route, state); - if (!router) { return type === 1 ? super.canActivate(route, state) : super.canActivateChild(route, state); } diff --git a/src/app/global-config.module.ts b/src/app/global-config.module.ts index ec62a552..163c16c9 100644 --- a/src/app/global-config.module.ts +++ b/src/app/global-config.module.ts @@ -17,7 +17,7 @@ const alainConfig: AlainConfig = { page: { show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }, modal: { size: 'lg' } }, - sf: { button: { search: '查询' } }, + sf: { button: { search: '查询' }, ui: { placeholder: '请输入' } }, pageHeader: { homeI18n: 'home', recursiveBreadcrumb: true }, auth: { login_url: '/passport/login' }, acl: { guard_url: '/exception/403' } diff --git a/src/app/routes/partner/partner-list/components/index/partner-list.component.html b/src/app/routes/partner/partner-list/components/index/partner-list.component.html new file mode 100644 index 00000000..f1de5a81 --- /dev/null +++ b/src/app/routes/partner/partner-list/components/index/partner-list.component.html @@ -0,0 +1,95 @@ + + + + +
+
+ +
+
+ + + +
+
+
+ + +
+ + +
+ + + +
+ + +
+
+ + 深圳某某有限公司 + + + + + + + +
+
+

说明:修改模板后,当月开始返佣收益将会按新模板计算

+
+ + +
+
+ + 深圳某某有限公司 + + + 张三/13999999999 + + + + + + + + + + + +

已选(0)

+ + + + + 客户名称 + + + + + + {{ data.name }} + + + +
+ + + + + + +
+
+

客户转移:客户跟着上级合伙人转移一并到新渠道销售下,会同步发起CRM《客户转移》流程;不转移的,客户会与上级合伙人解绑,成为渠道销售的直客

+
\ No newline at end of file diff --git a/src/app/routes/partner/partner-list/components/index/partner-list.component.less b/src/app/routes/partner/partner-list/components/index/partner-list.component.less new file mode 100644 index 00000000..e69de29b diff --git a/src/app/routes/partner/partner-list/components/index/partner-list.component.ts b/src/app/routes/partner/partner-list/components/index/partner-list.component.ts new file mode 100644 index 00000000..219a9d6b --- /dev/null +++ b/src/app/routes/partner/partner-list/components/index/partner-list.component.ts @@ -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: '详情
', + click: item => this.router.navigate(['/partner/partner-list/detail/' + item.id]) + }, + { + text: '修改返佣模板', + click: item => this.editTemplateAction(item) + }, + { + text: '修改渠道销售', + click: item => this.editCannelAction(item) + }, + { + text: '审核
', + click: item => this.auditPartner(item) + }, + { + text: '重发CRM流程', + click: item => this.router.navigate(['/partner/account-management/list/detail/' + item.id]) + } + ] + } + ]; + } +} diff --git a/src/app/routes/partner/partner-list/components/partner-audit-modal/partner-audit-modal.component.html b/src/app/routes/partner/partner-list/components/partner-audit-modal/partner-audit-modal.component.html new file mode 100644 index 00000000..8ea7c9f8 --- /dev/null +++ b/src/app/routes/partner/partner-list/components/partner-audit-modal/partner-audit-modal.component.html @@ -0,0 +1,7 @@ +
+ +
+ \ No newline at end of file diff --git a/src/app/routes/partner/partner-list/components/partner-audit-modal/partner-audit-modal.component.less b/src/app/routes/partner/partner-list/components/partner-audit-modal/partner-audit-modal.component.less new file mode 100644 index 00000000..e69de29b diff --git a/src/app/routes/partner/partner-list/components/partner-audit-modal/partner-audit-modal.component.ts b/src/app/routes/partner/partner-list/components/partner-audit-modal/partner-audit-modal.component.ts new file mode 100644 index 00000000..eed7b8ac --- /dev/null +++ b/src/app/routes/partner/partner-list/components/partner-audit-modal/partner-audit-modal.component.ts @@ -0,0 +1,117 @@ +import { Component, Input, OnInit, ViewChild } from '@angular/core'; +import { SFComponent, SFSchema } 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: { + 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' }, + default: true + }, + a: { + title: '渠道销售', + type: 'string', + enum: [ + { value: true, label: '通过' }, + { value: false, label: '驳回' } + ], + ui: { + widget: 'select', + placeholder: '请选择' + }, + default: '' + }, + b: { + title: '备注', + type: 'string', + maxLength: 100, + ui: { + widget: 'textarea', + placeholder: '请不要超过100个字', + autosize: { minRows: 3 } + } + } + }, + if: { + properties: { status: { enum: [true] } } + }, + then: { + required: ['a'] + }, + else: { + required: ['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(); + } +} diff --git a/src/app/routes/partner/partner-list/components/partner-detail/partner-detail.component.html b/src/app/routes/partner/partner-list/components/partner-detail/partner-detail.component.html new file mode 100644 index 00000000..6dcdbb97 --- /dev/null +++ b/src/app/routes/partner/partner-list/components/partner-detail/partner-detail.component.html @@ -0,0 +1,342 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 企业管理员信息 + + + + + {{detailData.adminUserInfo?.mobile}} + + + + + +
+ + + + +
+
+ + + + - + + + + + + + + + +
+ + + + + + + + +

+ 四要素验证: + + + +

+
+ + + + + + + + + + + + + + + - + + + + + + + + + +
+ + + 法人信息 + + + + + + + + + - + + + + + + + + + + +
+ + + + +
+
+
+ + + 所属城市 + + 深圳、上海、北京 + + + + + 渠道销售信息 + + 张学友 + + + 13999999999 + + + 2021-09-23 14:43:31 + + +
+ + + + 修改渠道销售记录 + + + + + + + + +
+ +
{{title}} +
+
+ {{content}} +
+
+
+ + +
+
+ + {{ detailData?.enterpriseName }} + + + + + + +
+
+
+ + +
+
+ + {{ detailData?.enterpriseName }} + + + + +
+
+
+ + + + + +
上传
+
+
+ +
+
+ +
+ +
+
+
+
+
\ No newline at end of file diff --git a/src/app/routes/partner/partner-list/components/partner-detail/partner-detail.component.less b/src/app/routes/partner/partner-list/components/partner-detail/partner-detail.component.less new file mode 100644 index 00000000..eadc3a6a --- /dev/null +++ b/src/app/routes/partner/partner-list/components/partner-detail/partner-detail.component.less @@ -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; + } +} \ No newline at end of file diff --git a/src/app/routes/partner/partner-list/components/partner-detail/partner-detail.component.ts b/src/app/routes/partner/partner-list/components/partner-detail/partner-detail.component.ts new file mode 100644 index 00000000..f0e81cf1 --- /dev/null +++ b/src/app/routes/partner/partner-list/components/partner-detail/partner-detail.component.ts @@ -0,0 +1,337 @@ +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 { + columns: STColumn[] = this.initST(); + + @ViewChild('approvedModal', { static: false }) + approvedModal!: any; + @ViewChild('redectModal', { static: false }) + redectModal!: any; + + detailData: any = { adminUserInfo: { name: '' }, legalPersonIdentityVO: { name: '' } }; + tempalateData = { ...this.detailData }; + suppliersData: any = {}; + + isEdit = false; + + uploadURl = apiConf.waterFileUpload; + disabledUpload = false; + enterpriseAddressCode: any = []; + ltdId: any = []; + + approvalOpinion = ''; + networkTransporter = null; + + 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() { + const modal = this.nzModalService.create({ + nzTitle: '审核', + nzContent: PartnerAuditModalComponent, + nzComponentParams: { info: this.detailData }, + 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(): 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: '操作', + fixed: 'right', + width: '140px', + buttons: [ + { + text: '详情' + } + ] + } + ]; + } +} diff --git a/src/app/routes/partner/partner-list/services/partner-list.service.ts b/src/app/routes/partner/partner-list/services/partner-list.service.ts new file mode 100644 index 00000000..7b07381f --- /dev/null +++ b/src/app/routes/partner/partner-list/services/partner-list.service.ts @@ -0,0 +1,26 @@ +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'; + + 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 } }); + } +} diff --git a/src/app/routes/partner/partner-routing.module.ts b/src/app/routes/partner/partner-routing.module.ts index 9fef0745..5f131455 100644 --- a/src/app/routes/partner/partner-routing.module.ts +++ b/src/app/routes/partner/partner-routing.module.ts @@ -27,6 +27,8 @@ import { PartnerAccountManagementAccountDetailComponent } from './account-manage import { PartnerAccountManagementRecordedDetailComponent } from './account-management/components/recorded-detail/recorded-detail.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 { PartnerListComponent } from './partner-list/components/index/partner-list.component'; +import { PartnerDetailComponent } from './partner-list/components/partner-detail/partner-detail.component'; const routes: Routes = [ { @@ -38,7 +40,7 @@ const routes: Routes = [ { path: 'partner/custom-detail/:id', component: PartnerPartnerCustomDetailComponent }, { path: 'partner/custom-order-detail/:id', component: PartnerPartnerCustomOrderDetailComponent }, { path: 'sale/custom-detail/:id', component: PartnerSaleCustomDetailComponent }, - { path: 'sale/partner-detail/:id', component: PartnerSalePartnerDetailComponent }, + { path: 'sale/partner-detail/:id', component: PartnerSalePartnerDetailComponent } ] }, { @@ -46,7 +48,7 @@ const routes: Routes = [ children: [ { path: '', component: ParterChannelSalesListComponent }, { path: 'list', component: ParterChannelSalesListComponent }, - { path: 'edit', component: ParterChannelSalesEditComponent }, + { path: 'edit', component: ParterChannelSalesEditComponent } ] }, { @@ -54,14 +56,14 @@ const routes: Routes = [ children: [ { path: '', component: ParterLevelConfigListComponent }, { path: 'list', component: ParterLevelConfigListComponent }, - { path: 'edit', component: ParterLevelConfigEditComponent }, + { path: 'edit', component: ParterLevelConfigEditComponent } ] }, { path: 'rebate', children: [ { path: 'particulars', component: ParterRebateManageMentParticularsComponent }, - { path: 'record', component: ParterRebateManageMentRecordComponent }, + { path: 'record', component: ParterRebateManageMentRecordComponent } ] }, { @@ -71,12 +73,19 @@ const routes: Routes = [ { path: 'account-detail', component: PartnerAccountManagementAccountDetailComponent }, { path: 'recorded-detail/:id', component: PartnerAccountManagementRecordedDetailComponent }, { path: 'withdraw-record', component: PartnerAccountManagementWithdrawalsRecordComponent }, - { path: 'withdraw-record/:id', component: PartnerAccountManagementWithdrawalsDetailComponent }, + { path: 'withdraw-record/:id', component: PartnerAccountManagementWithdrawalsDetailComponent } ] }, + { + path: 'partner-list', + children: [ + { path: '', component: PartnerListComponent }, + { path: 'detail/:id', component: PartnerDetailComponent } + ] + } ]; @NgModule({ imports: [RouterModule.forChild(routes)], exports: [RouterModule] }) -export class PartnerRoutingModule { } +export class PartnerRoutingModule {} diff --git a/src/app/routes/partner/partner.module.ts b/src/app/routes/partner/partner.module.ts index 66b8695d..49fe831a 100644 --- a/src/app/routes/partner/partner.module.ts +++ b/src/app/routes/partner/partner.module.ts @@ -32,6 +32,10 @@ import { PartnerAccountManagementAccountDetailComponent } from './account-manage import { PartnerAccountManagementRecordedDetailComponent } from './account-management/components/recorded-detail/recorded-detail.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 { PartnerDetailComponent } from './partner-list/components/partner-detail/partner-detail.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 { PartnerListService } from './partner-list/services/partner-list.service'; const COMPONENTS: any[] = [ PartnerBusinessStatisticsIndexComponent, @@ -54,11 +58,14 @@ const COMPONENTS: any[] = [ PartnerAccountManagementAccountDetailComponent, PartnerAccountManagementRecordedDetailComponent, PartnerAccountManagementWithdrawalsRecordComponent, - PartnerAccountManagementWithdrawalsDetailComponent + PartnerAccountManagementWithdrawalsDetailComponent, + PartnerListComponent, + PartnerDetailComponent ]; @NgModule({ - declarations: [...COMPONENTS], - imports: [CommonModule, PartnerRoutingModule, SharedModule] + declarations: [...COMPONENTS, PartnerAuditModalComponent], + imports: [CommonModule, PartnerRoutingModule, SharedModule], + providers: [PartnerListService] }) -export class PartnerModule { } +export class PartnerModule {} diff --git a/src/assets/mocks/menu-data.json b/src/assets/mocks/menu-data.json index 82b7732b..45058d21 100644 --- a/src/assets/mocks/menu-data.json +++ b/src/assets/mocks/menu-data.json @@ -508,7 +508,12 @@ { "text": "合伙人管理", "icon": "anticon anticon-dashboard", - "children": [{ + "children": [ + { + "text": "合伙人列表", + "link": "/partner/partner-list" + }, + { "text": "业务统计", "link": "/partner/business-statistics/index" }, From ab385dea60a6718989fedd1f33e95026dbd68310 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E6=99=93=E4=BA=91?= Date: Thu, 10 Mar 2022 17:51:20 +0800 Subject: [PATCH 05/10] - --- .../account-detail.component.html | 1 + .../components/list/list.component.html | 5 +- .../recorded-detail.component.html | 1 + .../virtual-account-detail.component.ts | 2 +- .../withdrawals-detail.component.html | 99 ++++++++++--------- .../withdrawals-detail.component.ts | 2 +- .../withdrawals-record.component.html | 1 + .../withdrawals-record.component.ts | 6 +- .../routes/partner/partner-routing.module.ts | 25 +++-- src/app/routes/partner/partner.module.ts | 4 +- src/assets/mocks/menu-data.json | 31 +++--- 11 files changed, 100 insertions(+), 77 deletions(-) diff --git a/src/app/routes/partner/account-management/components/account-detail/account-detail.component.html b/src/app/routes/partner/account-management/components/account-detail/account-detail.component.html index e37a9ce3..7f949749 100644 --- a/src/app/routes/partner/account-management/components/account-detail/account-detail.component.html +++ b/src/app/routes/partner/account-management/components/account-detail/account-detail.component.html @@ -1,3 +1,4 @@ + diff --git a/src/app/routes/partner/account-management/components/list/list.component.html b/src/app/routes/partner/account-management/components/list/list.component.html index 9992f0ab..e982c4e3 100644 --- a/src/app/routes/partner/account-management/components/list/list.component.html +++ b/src/app/routes/partner/account-management/components/list/list.component.html @@ -1,3 +1,4 @@ + - - - + + + - - -
- - {{formData?.ltdName}} - - - {{formData?.bankType==='1'?'平安银行':'浦发银行'}} - - - {{formData?.refundApplyCode}} - - - {{formData?.bankAccountName}} - - - {{formData?.createTime}} - - - {{formData?.virtualAccount}} - - - {{formData?.refundStatusLabel}} - - - {{formData?.amount | currency}} - - - {{formData?.bankSerialNumber}} - - - {{formData?.bankCardNumber}} - - - {{formData?.refundStatus==='3'?'下载回单':'暂无回单'}} - -
- -
-
- -
+ + +
+ + {{formData?.ltdName}} + + + {{formData?.bankType==='1'?'平安银行':'浦发银行'}} + + + {{formData?.refundApplyCode}} + + + {{formData?.bankAccountName}} + + + {{formData?.createTime}} + + + {{formData?.virtualAccount}} + + + {{formData?.refundStatusLabel}} + + + {{formData?.amount | currency}} + + + {{formData?.bankSerialNumber}} + + + {{formData?.bankCardNumber}} + + + {{formData?.refundStatus==='3'?'下载回单':'暂无回单'}} + +
+ + +
+
+
- \ No newline at end of file +
+
diff --git a/src/app/routes/partner/account-management/components/withdrawals-record/withdrawals-detail/withdrawals-detail.component.ts b/src/app/routes/partner/account-management/components/withdrawals-record/withdrawals-detail/withdrawals-detail.component.ts index 2332fd75..9c6173a1 100644 --- a/src/app/routes/partner/account-management/components/withdrawals-record/withdrawals-detail/withdrawals-detail.component.ts +++ b/src/app/routes/partner/account-management/components/withdrawals-record/withdrawals-detail/withdrawals-detail.component.ts @@ -8,7 +8,7 @@ import { FreightAccountService } from 'src/app/routes/financial-management/servi templateUrl: './withdrawals-detail.component.html', styleUrls: ['./withdrawals-detail.component.less'] }) -export class PartnerAccountManagementWithdrawalsDetailComponent implements OnInit { +export class PartnerAccountManagementWithdralDetailComponent implements OnInit { formData: any = {}; timeLineData: any = []; diff --git a/src/app/routes/partner/account-management/components/withdrawals-record/withdrawals-record.component.html b/src/app/routes/partner/account-management/components/withdrawals-record/withdrawals-record.component.html index 14e2ff3e..d7c20673 100644 --- a/src/app/routes/partner/account-management/components/withdrawals-record/withdrawals-record.component.html +++ b/src/app/routes/partner/account-management/components/withdrawals-record/withdrawals-record.component.html @@ -1,3 +1,4 @@ +
diff --git a/src/app/routes/partner/account-management/components/withdrawals-record/withdrawals-record.component.ts b/src/app/routes/partner/account-management/components/withdrawals-record/withdrawals-record.component.ts index 16738ce9..6b7b86f4 100644 --- a/src/app/routes/partner/account-management/components/withdrawals-record/withdrawals-record.component.ts +++ b/src/app/routes/partner/account-management/components/withdrawals-record/withdrawals-record.component.ts @@ -1,5 +1,5 @@ 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 { SFComponent, SFSchema, SFDateWidgetSchema } from '@delon/form'; import { NzModalService } from 'ng-zorro-antd/modal'; @@ -27,7 +27,7 @@ export class PartnerAccountManagementWithdrawalsRecordComponent implements OnIni refundStatus: any = ''; 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 { } @@ -325,7 +325,7 @@ export class PartnerAccountManagementWithdrawalsRecordComponent implements OnIni }, { text: '详情', - click: item => this.router.navigate(['/financial-management/withdrawals-record/detail/' + item.id]) + click: item => this.router.navigate(['./detail/' + item.id], { relativeTo: this.ar }) } ] } diff --git a/src/app/routes/partner/partner-routing.module.ts b/src/app/routes/partner/partner-routing.module.ts index b22dabab..a9bf5669 100644 --- a/src/app/routes/partner/partner-routing.module.ts +++ b/src/app/routes/partner/partner-routing.module.ts @@ -29,7 +29,7 @@ import { ParterRebateManageMentRecordComponent } from './rebate-management/compo import { PartnerAccountManagementAccountDetailComponent } from './account-management/components/account-detail/account-detail.component'; import { PartnerAccountManagementRecordedDetailComponent } from './account-management/components/recorded-detail/recorded-detail.component'; import { PartnerAccountManagementWithdrawalsRecordComponent } from './account-management/components/withdrawals-record/withdrawals-record.component'; -import { 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'; const routes: Routes = [ { @@ -70,13 +70,26 @@ const routes: Routes = [ { path: 'account-management', children: [ - { path: 'list', component: PartnerAccountManagementListComponent }, - { path: 'account-detail', component: PartnerAccountManagementAccountDetailComponent }, - { path: 'recorded-detail/:id', component: PartnerAccountManagementRecordedDetailComponent }, - { path: 'withdraw-record', component: PartnerAccountManagementWithdrawalsRecordComponent }, - { path: 'withdraw-record/:id', component: PartnerAccountManagementWithdrawalsDetailComponent }, + { + 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 } + ] + }, ] }, + { path: 'claim-audit', children: [ diff --git a/src/app/routes/partner/partner.module.ts b/src/app/routes/partner/partner.module.ts index 0d94b9ef..cbe18425 100644 --- a/src/app/routes/partner/partner.module.ts +++ b/src/app/routes/partner/partner.module.ts @@ -38,7 +38,7 @@ import { PartnerAccountManagementVirtualAccountDetailComponent } from './account import { PartnerAccountManagementAccountDetailComponent } from './account-management/components/account-detail/account-detail.component'; import { PartnerAccountManagementRecordedDetailComponent } from './account-management/components/recorded-detail/recorded-detail.component'; import { PartnerAccountManagementWithdrawalsRecordComponent } from './account-management/components/withdrawals-record/withdrawals-record.component'; -import { 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 { ParterRebateManageMentRecordComponent } from './rebate-management/components/rebate-record/rebate-record.component'; const COMPONENTS: any[] = [ @@ -69,7 +69,7 @@ const COMPONENTS: any[] = [ PartnerAccountManagementAccountDetailComponent, PartnerAccountManagementRecordedDetailComponent, PartnerAccountManagementWithdrawalsRecordComponent, - PartnerAccountManagementWithdrawalsDetailComponent + PartnerAccountManagementWithdralDetailComponent ]; @NgModule({ diff --git a/src/assets/mocks/menu-data.json b/src/assets/mocks/menu-data.json index 473d4c2f..3f8a56dc 100644 --- a/src/assets/mocks/menu-data.json +++ b/src/assets/mocks/menu-data.json @@ -542,11 +542,11 @@ "group": true, "children": [{ "text": "账户管理", - "link": "/partner/account-management/list" + "link": "/partner/account-management/am" }, { "text": "账户明细", - "link": "/partner/account-management/account-detail", + "link": "/partner/account-management/am/detail/:id", "hide": true }, { @@ -555,7 +555,12 @@ }, { "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 } ] @@ -564,16 +569,16 @@ "text": "客户认领审核", "link": "/partner/claim-audit/list", "children": [{ - "text": "合伙人客户认领详情", - "link": "/partner/claim-audit/partner-detail", - "hide": true - }, - { - "text": "渠道销售客户认领详情", - "link": "/partner/claim-audit/channel-detail", - "hide": true - } - ] + "text": "合伙人客户认领详情", + "link": "/partner/claim-audit/partner-detail", + "hide": true + }, + { + "text": "渠道销售客户认领详情", + "link": "/partner/claim-audit/channel-detail", + "hide": true + } + ] } ] } From 28a20973d3da53acf594f5beb4d5ebfb35f86d86 Mon Sep 17 00:00:00 2001 From: Taric Xin Date: Thu, 10 Mar 2022 20:36:10 +0800 Subject: [PATCH 06/10] edit --- .../partner-audit-modal.component.ts | 42 +++++++--- .../partner-detail.component.html | 80 ++++++++---------- .../partner-detail.component.ts | 82 ++++++++++++------- .../freight/list/detail/detail.component.html | 1 - 4 files changed, 113 insertions(+), 92 deletions(-) diff --git a/src/app/routes/partner/partner-list/components/partner-audit-modal/partner-audit-modal.component.ts b/src/app/routes/partner/partner-list/components/partner-audit-modal/partner-audit-modal.component.ts index eed7b8ac..ab86de05 100644 --- a/src/app/routes/partner/partner-list/components/partner-audit-modal/partner-audit-modal.component.ts +++ b/src/app/routes/partner/partner-list/components/partner-audit-modal/partner-audit-modal.component.ts @@ -1,5 +1,5 @@ import { Component, Input, OnInit, ViewChild } from '@angular/core'; -import { SFComponent, SFSchema } from '@delon/form'; +import { SFComponent, SFSchema, SFValue } from '@delon/form'; import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal'; import { PartnerListService } from '../../services/partner-list.service'; @@ -23,6 +23,13 @@ export class PartnerAuditModalComponent implements OnInit { initSF(user: any) { this.schema = { properties: { + isPass: { + type: 'boolean', + ui: { + hidden: true + }, + default: this.info.isPass + }, staffName: { title: '合伙人名称', type: 'string', @@ -37,7 +44,10 @@ export class PartnerAuditModalComponent implements OnInit { { value: true, label: '通过' }, { value: false, label: '驳回' } ], - ui: { widget: 'radio' }, + ui: { + widget: 'radio', + hidden: this.info.isPass !== undefined + }, default: true }, a: { @@ -49,7 +59,14 @@ export class PartnerAuditModalComponent implements OnInit { ], ui: { widget: 'select', - placeholder: '请选择' + placeholder: '请选择', + hidden: this.info.isPass === false, + visibleIf: { + status: value => value + }, + errors: { + required: ' ' + } }, default: '' }, @@ -60,19 +77,18 @@ export class PartnerAuditModalComponent implements OnInit { ui: { widget: 'textarea', placeholder: '请不要超过100个字', - autosize: { minRows: 3 } + autosize: { minRows: 3 }, + hidden: this.info.isPass === true, + visibleIf: { + status: value => !value || this.info.isPass === false + }, + errors: { + required: ' ' + } } } }, - if: { - properties: { status: { enum: [true] } } - }, - then: { - required: ['a'] - }, - else: { - required: ['b'] - } + required: ['a', 'b'] }; } diff --git a/src/app/routes/partner/partner-list/components/partner-detail/partner-detail.component.html b/src/app/routes/partner/partner-list/components/partner-detail/partner-detail.component.html index 6dcdbb97..f242099c 100644 --- a/src/app/routes/partner/partner-list/components/partner-detail/partner-detail.component.html +++ b/src/app/routes/partner/partner-list/components/partner-detail/partner-detail.component.html @@ -49,13 +49,11 @@ - - - @@ -73,8 +71,7 @@ 冻结 - @@ -113,7 +110,8 @@ [nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'"> - {{detailData.adminUserInfo?.mobile}} + - 法人信息 + 企业法人信息 @@ -232,7 +230,6 @@ (ngModelChange)="$event?detailData.legalPersonIdentityVO.validEndTime='':''" class="ml-sm">长期 -
@@ -244,15 +241,19 @@
-
- - - 所属城市 - - 深圳、上海、北京 + + + + + + + {{ detailData?.fullRegionVO?.provinceName }}{{ detailData?.fullRegionVO?.cityName }}{{ + detailData?.fullRegionVO?.areaName }} + + 渠道销售信息 @@ -271,8 +272,8 @@ 修改渠道销售记录 - + @@ -289,35 +290,6 @@
- -
-
- - {{ detailData?.enterpriseName }} - - - - - - -
-
-
- - -
-
- - {{ detailData?.enterpriseName }} - - - - -
-
-
-
+ + + +

转移客户数:10

+ + +

不转移客户数:10

+ + +

+ 客户转移:客户跟着上级合伙人转移一并到新渠道销售下,会同步发起CRM《客户转移》流程;不转移的,客户会与上级合伙人解绑,修改成功后,修改时间也是合伙人与客户的结算结束时间,成为原来渠道销售的直客。 +

\ No newline at end of file diff --git a/src/app/routes/partner/partner-list/components/partner-detail/partner-detail.component.ts b/src/app/routes/partner/partner-list/components/partner-detail/partner-detail.component.ts index f0e81cf1..fdfd31a3 100644 --- a/src/app/routes/partner/partner-list/components/partner-detail/partner-detail.component.ts +++ b/src/app/routes/partner/partner-list/components/partner-detail/partner-detail.component.ts @@ -15,16 +15,13 @@ import { PartnerAuditModalComponent } from '../partner-audit-modal/partner-audit providers: [DatePipe] }) export class PartnerDetailComponent implements OnInit { - columns: STColumn[] = this.initST(); + @ViewChild('logModal') + logModal: any; - @ViewChild('approvedModal', { static: false }) - approvedModal!: any; - @ViewChild('redectModal', { static: false }) - redectModal!: any; + columns: { logsColumn: STColumn[]; changeColumn: STColumn[]; beChangeColumn: STColumn[] } = this.initST(); detailData: any = { adminUserInfo: { name: '' }, legalPersonIdentityVO: { name: '' } }; tempalateData = { ...this.detailData }; - suppliersData: any = {}; isEdit = false; @@ -33,9 +30,6 @@ export class PartnerDetailComponent implements OnInit { enterpriseAddressCode: any = []; ltdId: any = []; - approvalOpinion = ''; - networkTransporter = null; - esignCheckStatus: any = { 0: '不通过', 1: '通过', @@ -113,11 +107,21 @@ export class PartnerDetailComponent implements OnInit { // }); } - auditPartner() { + auditPartner(isPass: boolean) { const modal = this.nzModalService.create({ nzTitle: '审核', nzContent: PartnerAuditModalComponent, - nzComponentParams: { info: this.detailData }, + nzComponentParams: { info: { ...this.detailData, isPass } }, + nzFooter: null + }); + } + + showChangeDetail() { + const modal = this.nzModalService.create({ + nzTitle: '详情', + nzContent: this.logModal, + nzNoAnimation: true, + nzWidth: 700, nzFooter: null }); } @@ -313,25 +317,41 @@ export class PartnerDetailComponent implements OnInit { // }); } - 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: '操作', - fixed: 'right', - width: '140px', - buttons: [ - { - text: '详情' - } - ] - } - ]; + 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 } + ] + }; } } diff --git a/src/app/routes/usercenter/components/freight/list/detail/detail.component.html b/src/app/routes/usercenter/components/freight/list/detail/detail.component.html index 7a3798cf..33cb59e6 100644 --- a/src/app/routes/usercenter/components/freight/list/detail/detail.component.html +++ b/src/app/routes/usercenter/components/freight/list/detail/detail.component.html @@ -278,7 +278,6 @@ -
From 1db85b00b95f374feb6ed8259591604fa1d50473 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E6=99=93=E4=BA=91?= Date: Fri, 11 Mar 2022 10:36:49 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E5=85=A5=E8=B4=A6=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../withdrawals-detail.component.ts | 2 +- .../routes/partner/partner-routing.module.ts | 12 +- src/app/routes/partner/partner.module.ts | 7 +- .../components/detail/detail.component.html | 64 ++++ .../components/detail/detail.component.less | 17 + .../components/detail/detail.component.ts | 87 +++++ .../components/record/record.component.html | 62 ++++ .../components/record/record.component.ts | 334 ++++++++++++++++++ src/assets/mocks/menu-data.json | 9 + 9 files changed, 590 insertions(+), 4 deletions(-) create mode 100644 src/app/routes/partner/recorded/components/detail/detail.component.html create mode 100644 src/app/routes/partner/recorded/components/detail/detail.component.less create mode 100644 src/app/routes/partner/recorded/components/detail/detail.component.ts create mode 100644 src/app/routes/partner/recorded/components/record/record.component.html create mode 100644 src/app/routes/partner/recorded/components/record/record.component.ts diff --git a/src/app/routes/partner/account-management/components/withdrawals-record/withdrawals-detail/withdrawals-detail.component.ts b/src/app/routes/partner/account-management/components/withdrawals-record/withdrawals-detail/withdrawals-detail.component.ts index 9c6173a1..95657e1e 100644 --- a/src/app/routes/partner/account-management/components/withdrawals-record/withdrawals-detail/withdrawals-detail.component.ts +++ b/src/app/routes/partner/account-management/components/withdrawals-record/withdrawals-detail/withdrawals-detail.component.ts @@ -4,7 +4,7 @@ import { FreightAccountService } from 'src/app/routes/financial-management/servi @Component({ - selector: 'app-withdrawals-detail', + selector: 'app-partner-account-management-withdrawals-detail', templateUrl: './withdrawals-detail.component.html', styleUrls: ['./withdrawals-detail.component.less'] }) diff --git a/src/app/routes/partner/partner-routing.module.ts b/src/app/routes/partner/partner-routing.module.ts index a9bf5669..1fa7f324 100644 --- a/src/app/routes/partner/partner-routing.module.ts +++ b/src/app/routes/partner/partner-routing.module.ts @@ -30,6 +30,8 @@ import { PartnerAccountManagementAccountDetailComponent } from './account-manage import { PartnerAccountManagementRecordedDetailComponent } from './account-management/components/recorded-detail/recorded-detail.component'; import { PartnerAccountManagementWithdrawalsRecordComponent } from './account-management/components/withdrawals-record/withdrawals-record.component'; import { PartnerAccountManagementWithdralDetailComponent } from './account-management/components/withdrawals-record/withdrawals-detail/withdrawals-detail.component'; +import { PartnerRecordedRecordComponent } from './recorded/components/record/record.component'; +import { PartnerRecordedDetailComponent } from './recorded/components/detail/detail.component'; const routes: Routes = [ { @@ -79,7 +81,6 @@ const routes: Routes = [ { path: 'recorded/detail/:id', component: PartnerAccountManagementRecordedDetailComponent }, ] }, - { path: 'withdraw-record', children: [ @@ -89,7 +90,6 @@ const routes: Routes = [ }, ] }, - { path: 'claim-audit', children: [ @@ -99,6 +99,14 @@ const routes: Routes = [ { path: 'partner-detail', component: ParterClaimAuditListPartnerDetailComponent }, ] }, + { + path: 'recorded', + children: [ + { path: 'record', component: PartnerRecordedRecordComponent }, + { path: 'record/detail/:id', component: PartnerRecordedDetailComponent } + ] + }, + ]; @NgModule({ imports: [RouterModule.forChild(routes)], diff --git a/src/app/routes/partner/partner.module.ts b/src/app/routes/partner/partner.module.ts index cbe18425..deb047b2 100644 --- a/src/app/routes/partner/partner.module.ts +++ b/src/app/routes/partner/partner.module.ts @@ -40,6 +40,8 @@ import { PartnerAccountManagementRecordedDetailComponent } from './account-manag import { PartnerAccountManagementWithdrawalsRecordComponent } from './account-management/components/withdrawals-record/withdrawals-record.component'; import { PartnerAccountManagementWithdralDetailComponent } from './account-management/components/withdrawals-record/withdrawals-detail/withdrawals-detail.component'; import { ParterRebateManageMentRecordComponent } from './rebate-management/components/rebate-record/rebate-record.component'; +import { PartnerRecordedDetailComponent } from './recorded/components/detail/detail.component'; +import { PartnerRecordedRecordComponent } from './recorded/components/record/record.component'; const COMPONENTS: any[] = [ PartnerBusinessStatisticsIndexComponent, @@ -69,7 +71,10 @@ const COMPONENTS: any[] = [ PartnerAccountManagementAccountDetailComponent, PartnerAccountManagementRecordedDetailComponent, PartnerAccountManagementWithdrawalsRecordComponent, - PartnerAccountManagementWithdralDetailComponent + PartnerAccountManagementWithdralDetailComponent, + PartnerRecordedRecordComponent, + PartnerRecordedDetailComponent + ]; @NgModule({ diff --git a/src/app/routes/partner/recorded/components/detail/detail.component.html b/src/app/routes/partner/recorded/components/detail/detail.component.html new file mode 100644 index 00000000..ed894907 --- /dev/null +++ b/src/app/routes/partner/recorded/components/detail/detail.component.html @@ -0,0 +1,64 @@ + + + + + + + + + + +
+ + {{formData?.ltdName}} + + + {{formData?.bankType==='1'?'平安银行':'浦发银行'}} + + + {{formData?.refundApplyCode}} + + + {{formData?.bankAccountName}} + + + {{formData?.createTime}} + + + {{formData?.virtualAccount}} + + + {{formData?.refundStatusLabel}} + + + {{formData?.amount | currency}} + + + {{formData?.bankSerialNumber}} + + + {{formData?.bankCardNumber}} + + + {{formData?.refundStatus==='3'?'下载回单':'暂无回单'}} + +
+ + +
+
+ +
+
+
diff --git a/src/app/routes/partner/recorded/components/detail/detail.component.less b/src/app/routes/partner/recorded/components/detail/detail.component.less new file mode 100644 index 00000000..e299b7d1 --- /dev/null +++ b/src/app/routes/partner/recorded/components/detail/detail.component.less @@ -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; + } +} \ No newline at end of file diff --git a/src/app/routes/partner/recorded/components/detail/detail.component.ts b/src/app/routes/partner/recorded/components/detail/detail.component.ts new file mode 100644 index 00000000..a4c4b5ba --- /dev/null +++ b/src/app/routes/partner/recorded/components/detail/detail.component.ts @@ -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: `拒绝提现
操作人员:${res.handlerUserIdLabel}`, + color: 'red' + }); + } else { + this.timeLineData.push({ + time: res.agreeTime, + value: `审核通过
操作人员:${res.handlerUserIdLabel}`, + color: 'gray' + }); + } + } + if (res.createTime) { + this.timeLineData.push({ + time: res.createTime, + value: `提交提现申请
提现${res.amount}元至${res.bankName}(${res.bankCardNumber})
操作人员:${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); + } +} diff --git a/src/app/routes/partner/recorded/components/record/record.component.html b/src/app/routes/partner/recorded/components/record/record.component.html new file mode 100644 index 00000000..50438e09 --- /dev/null +++ b/src/app/routes/partner/recorded/components/record/record.component.html @@ -0,0 +1,62 @@ + + +
+
+ +
+
+ + + + +
+
+
+ + + + + + + + + + + +
+
+ 已选择 + {{ selectedRows.length }} 条数据   累计提现 {{ + totalCallNo }} + +
+ +
+
+ + + + {{ item.bankName }}
{{ item.bankCardNumber }} +
+
+
+ + +
+
+ + + +
+
+
diff --git a/src/app/routes/partner/recorded/components/record/record.component.ts b/src/app/routes/partner/recorded/components/record/record.component.ts new file mode 100644 index 00000000..e15f2aaa --- /dev/null +++ b/src/app/routes/partner/recorded/components/record/record.component.ts @@ -0,0 +1,334 @@ +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(); + + _$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 = []; + 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: 'refundApplyCode', width: 180, className: 'text-center' }, + { title: '网络货运人', index: 'ltdName', width: 220, className: 'text-center' }, + { title: '银行类型', index: 'bankTypeLabel', width: 100, className: 'text-center' }, + { title: '账户类型', index: 'bankTypeLabel', width: 100, className: 'text-center' }, + { title: '账户名称', index: 'bankAccountName', width: 220, className: 'text-center' }, + { title: '虚拟账户', index: 'virtualAccount', width: 180, className: 'text-center' }, + { + title: '提现金额', + index: 'amount', + width: 150, + type: 'widget', + className: 'text-right', + widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.amount }) } + }, + { title: '提现银行账户', render: 'bankCardNumber', width: 200, className: 'text-center' }, + { title: '提现状态', index: 'refundStatusLabel', width: 100, className: 'text-center' }, + { title: '银行流水号', index: 'bankSerialNumber', width: 160, className: 'text-center' }, + { title: '核心交易流水', index: 'coreSerNo', width: 180, className: 'text-center' }, + { title: '失败原因', index: 'rejectionCause', width: 200, format: item => item.failCause, className: 'text-center' }, + { + title: '操作', + fixed: 'right', + width: '110px', + buttons: [ + { + text: '查看回单', + iif: item => item.refundStatus === '3', + click: item => + this.service.getReceiptUrl(item.receiptUrl, { + bankType: item.bankType, + rmYll: item.userId, + snglFlgCd: item.coreSerNo, + bussType: '06', + ltdId: item.ltdId + }) + }, + { + text: '查看原因', + iif: item => item.refundStatus === '4', + click: item => this.showReason(item) + }, + { + text: '审核', + iif: item => item.refundStatus === '1', + click: item => this.auditAction(item) + }, + { + text: '详情', + click: item => this.router.navigate(['./detail/' + item.id], { relativeTo: this.ar }) + } + ] + } + ]; + } +} diff --git a/src/assets/mocks/menu-data.json b/src/assets/mocks/menu-data.json index 3f8a56dc..ea65b36a 100644 --- a/src/assets/mocks/menu-data.json +++ b/src/assets/mocks/menu-data.json @@ -579,6 +579,15 @@ "hide": true } ] + }, + { + "text": "入账记录", + "link": "/partner/recorded/record" + }, + { + "text": "入账详情", + "link": "/partner/recorded/record/:id", + "hide": true } ] } From efa9a6bbad214ad452f1648d91d1e78edae6cbdc Mon Sep 17 00:00:00 2001 From: Taric Xin Date: Fri, 11 Mar 2022 10:50:53 +0800 Subject: [PATCH 08/10] e --- .../add-etp-partner.component.html | 95 +++ .../add-etp-partner.component.less | 68 +++ .../add-etp-partner.component.ts | 555 ++++++++++++++++++ .../add-personal-partner.component.html | 1 + .../add-personal-partner.component.less | 0 .../add-personal-partner.component.ts | 15 + .../index/partner-list.component.html | 4 +- .../services/partner-list.service.ts | 4 + .../routes/partner/partner-routing.module.ts | 6 +- src/app/routes/partner/partner.module.ts | 9 +- 10 files changed, 752 insertions(+), 5 deletions(-) create mode 100644 src/app/routes/partner/partner-list/components/add-etp-partner/add-etp-partner.component.html create mode 100644 src/app/routes/partner/partner-list/components/add-etp-partner/add-etp-partner.component.less create mode 100644 src/app/routes/partner/partner-list/components/add-etp-partner/add-etp-partner.component.ts create mode 100644 src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.html create mode 100644 src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.less create mode 100644 src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.ts diff --git a/src/app/routes/partner/partner-list/components/add-etp-partner/add-etp-partner.component.html b/src/app/routes/partner/partner-list/components/add-etp-partner/add-etp-partner.component.html new file mode 100644 index 00000000..2cfb1621 --- /dev/null +++ b/src/app/routes/partner/partner-list/components/add-etp-partner/add-etp-partner.component.html @@ -0,0 +1,95 @@ + + + + +
企业基本信息
+
+ +
+ 请上传营业执照原件的高清照片,若上传复印件,则需加盖公司印章; +
上传后系统会自动识别并填写
+
+
+ +
万元
+
+ + +
营业执照法人信息
+
+ +
+
请上传身份证原件的高清照片,若上传复印件,则需申请人签字;
+
上传后系统会自动识别并填写
+
+
+ +
+
+
正面照(人像面)
+
示例
+
+
+
+
+ +
+
+
背面照(国徽面)
+
示例
+
+
+
+
+
+ + + +
企业开票信息
+
+ +
企业管理员信息
+
+ + +
+
请上传该企业授权您成为本系统企业管理员的文件的高清照片,需加盖公司印章
+
上传后系统会自动识别并填写
+
+
+
+
+ +
+
请上传身份证原件的高清照片,若上传复印件,则需申请人签字;
+
上传后系统会自动识别并填写
+
+
+ +
+
+
正面照(人像面)
+
示例
+
+
+
+
+ +
+
+
背面照(国徽面)
+
示例
+
+
+
+
+
+ +
+ + +
+
\ No newline at end of file diff --git a/src/app/routes/partner/partner-list/components/add-etp-partner/add-etp-partner.component.less b/src/app/routes/partner/partner-list/components/add-etp-partner/add-etp-partner.component.less new file mode 100644 index 00000000..6b70e074 --- /dev/null +++ b/src/app/routes/partner/partner-list/components/add-etp-partner/add-etp-partner.component.less @@ -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; + } + } + } + + } + } \ No newline at end of file diff --git a/src/app/routes/partner/partner-list/components/add-etp-partner/add-etp-partner.component.ts b/src/app/routes/partner/partner-list/components/add-etp-partner/add-etp-partner.component.ts new file mode 100644 index 00000000..580f9f3d --- /dev/null +++ b/src/app/routes/partner/partner-list/components/add-etp-partner/add-etp-partner.component.ts @@ -0,0 +1,555 @@ +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 +} 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; + @ViewChild('sf1', { static: false }) + sf1!: SFComponent; + schema: SFSchema = this.initOthersSF(); + schema1: SFSchema = this.initBasicInfoSF(); + ui: SFUISchema = { + '*': { + spanLabelFixed: 180, + grid: { span: 24 } + }, + $_basicInfoTitle: { + spanLabelFixed: 0 + }, + $title99: { + spanLabelFixed: 0 + }, + $_legalPersontitle: { + spanLabelFixed: 0 + }, + $registrationCapital: { + spanLabelFixed: 180, + grid: { xxl: 13, xl: 18, lg: 22, md: 22 } + }, + $unit: { + grid: { xxl: 6, xl: 6, lg: 2, md: 2 } + }, + $_isLoingDate: { + spanLabelFixed: 100, + grid: { xxl: 6, xl: 6, lg: 4, md: 6 } + } + }; + + constructor(private router: Router, public service: PartnerListService) {} + ngOnInit() { + } + + submitForm() { + if (!this.sf1.valid || !this.sf.valid) { + this.sf.validator({ emitError: true }); + this.sf1.validator({ emitError: true }); + this.service.msgSrv.warning('请修改填写错误信息'); + return; + } + const enterpriseRegistrationTime = new Date(this.sf1.value.enterpriseRegistrationTime); + const operatingStartTime = new Date(this.sf1.value.operatingStartTime); + if (enterpriseRegistrationTime.getTime() > operatingStartTime.getTime()) { + this.service.msgSrv.warning('营业期限不能小于成立日期'); + return; + } + if (this.sf1.value.operatingEndTime) { + const operatingEndTime = new Date(this.sf1.value.operatingEndTime); + if (operatingStartTime.getTime() > operatingEndTime.getTime()) { + this.service.msgSrv.warning('营业期限不能小于期限开始日期'); + return; + } + } + const validStartTime = new Date(this.sf1.value.legalPersonIdentityDTO.validStartTime); + if (this.sf1.value.legalPersonIdentityDTO.validEndTime) { + const validEndTime = new Date(this.sf1.value.legalPersonIdentityDTO.validEndTime); + if (validStartTime.getTime() > validEndTime.getTime()) { + this.service.msgSrv.warning('法人证件有效截止日期小于开始日期'); + return; + } + } + const sfVlaue = this.sf.value; + const params = {}; + Object.assign( + params, + { ...this.sf1.value }, + { ...this.sf.value }, + { + enterpriseAddressCode: this.sf1.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.sf1.setValue('/legalPersonIdentityDTO/name', res.name); + } + if (res.number) { + this.sf1.setValue('/legalPersonIdentityDTO/certificateType', 0); + this.sf1.setValue('/legalPersonIdentityDTO/certificateNumber', res.number); + } + } + if (isFront === 'back') { + // 背面 + if (res.validFrom) { + this.sf1.setValue('/legalPersonIdentityDTO/validStartTime', res.validFrom); + } + if (res.validTo) { + this.sf1.setValue('/legalPersonIdentityDTO/validEndTime', res.validTo); + this.sf1.setValue('/legalPersonIdentityDTO/_isLoingDate', false); + } else { + this.sf1.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.sf1.setValue('/unifiedSocialCreditCode', res.registrationNumber); + } + if (res.name) { + this.sf1.setValue('/enterpriseName', res.name); + } + if (res.type) { + this.sf1.setValue('/enterpriseType', res.type); + } + if (res.addressRegionCodes) { + this.sf1.setValue('/enterpriseAddressCode', res.addressRegionCodes); + } + if (res.address) { + this.sf1.setValue('/enterpriseAddress', res.address); + } + if (res.registeredCapital) { + this.sf1.setValue('/registrationCapital', res.registeredCapital); + } + if (res.foundDate) { + this.sf1.setValue('/enterpriseRegistrationTime', res.foundDate); + } + if (res.businessTermStartDate) { + this.sf1.setValue('/operatingStartTime', res.businessTermStartDate); + } + if (res.businessTermEndDate) { + this.sf1.setValue('/operatingEndTime', res.businessTermEndDate); + } else { + this.sf1.setValue('/_isLoingDate', true); + } + if (res.businessScope) { + this.sf1.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' } }, + 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.sf1.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.sf1?.setValue('/_isLoingDate', false); + } + } as SFDateWidgetSchema + }, + _isLoingDate: { + title: '长期', + type: 'boolean', + ui: { + class: 'input-back', + widget: 'checkbox', + change: i => this.sf1?.setValue('/operatingEndTime', null) + } as SFCheckboxWidgetSchema + }, + + legalPersonIdentityDTO: { + type: 'object', + properties: { + _legalPersontitle: { title: '', type: 'string', ui: { widget: 'custom' } }, + _certificatePhototips: { title: '法定代表人证件照', type: 'string', ui: { widget: 'custom' } }, + _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.sf1.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.sf1.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.sf1?.setValue('/legalPersonIdentityDTO/_isLoingDate', false); + } + } as SFDateWidgetSchema + }, + _isLoingDate: { + title: '长期', + type: 'boolean', + ui: { + spanLabelFixed: 100, + grid: { span: 6 }, + class: 'input-back', + widget: 'checkbox', + change: i => this.sf1?.setValue('/legalPersonIdentityDTO/validEndTime', null) + } as SFCheckboxWidgetSchema + } + }, + required: ['certificatePhotoFront', 'certificatePhotoBack', 'name', 'certificateType', 'certificateNumber', 'validStartTime'] + } + }, + required: [ + 'licensePhotoWatermark', + 'unifiedSocialCreditCode', + 'enterpriseName', + 'enterpriseType', + 'enterpriseAddressCode', + 'enterpriseAddress', + 'registrationCapital', + 'enterpriseRegistrationTime', + 'operatingStartTime', + 'businessScope' + ] + }; + } + + private initOthersSF(): SFSchema { + return { + properties: { + title99: { 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: '手机号格式错误' } + } + }, + tipsA: { + title: '企业管理员证件照', + type: 'string', + ui: { + widget: 'custom' + } + }, + 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 + }, + tipsB: { + 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: '请输入企业管理员身份证号' + } + }, + + title1: { title: '', type: 'string', ui: { widget: 'custom' } }, + createBank: { + title: '所属城市', + type: 'string', + ui: { grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, placeholder: '请输入银行账号' } + }, + + title3: { title: '', type: 'string', ui: { widget: 'custom' } }, + bankAccount: { + title: '渠道销售邀请码', + type: 'string', + ui: { grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, placeholder: '请输入银行账号' } + } + }, + required: ['createBank', 'bankAccount', 'adminMobile', 'name', 'certificateNumber', 'tipsD', 'creditPhoto'] + }; + } +} diff --git a/src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.html b/src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.html new file mode 100644 index 00000000..8245d202 --- /dev/null +++ b/src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.html @@ -0,0 +1 @@ +

add-personal-partner works!

diff --git a/src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.less b/src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.less new file mode 100644 index 00000000..e69de29b diff --git a/src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.ts b/src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.ts new file mode 100644 index 00000000..6d31529c --- /dev/null +++ b/src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-add-personal-partner', + templateUrl: './add-personal-partner.component.html', + styleUrls: ['./add-personal-partner.component.less'] +}) +export class AddPersonalPartnerComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/routes/partner/partner-list/components/index/partner-list.component.html b/src/app/routes/partner/partner-list/components/index/partner-list.component.html index f1de5a81..1e4aa340 100644 --- a/src/app/routes/partner/partner-list/components/index/partner-list.component.html +++ b/src/app/routes/partner/partner-list/components/index/partner-list.component.html @@ -22,8 +22,8 @@
- - + +
Date: Fri, 11 Mar 2022 11:16:46 +0800 Subject: [PATCH 09/10] - --- .../components/record/record.component.html | 26 +++++--- .../components/record/record.component.ts | 61 ++++++++++--------- 2 files changed, 49 insertions(+), 38 deletions(-) diff --git a/src/app/routes/partner/recorded/components/record/record.component.html b/src/app/routes/partner/recorded/components/record/record.component.html index 50438e09..1fd920b1 100644 --- a/src/app/routes/partner/recorded/components/record/record.component.html +++ b/src/app/routes/partner/recorded/components/record/record.component.html @@ -40,14 +40,24 @@
- - - {{ item.bankName }}
{{ item.bankCardNumber }} -
-
+
+ + + {{ item.bankName }}
{{ item.bankCardNumber }} +
+
+
+ 合伙人数: + 入账笔数: + 开票金额: + 代缴个税: + 入账金额: +
+
diff --git a/src/app/routes/partner/recorded/components/record/record.component.ts b/src/app/routes/partner/recorded/components/record/record.component.ts index e15f2aaa..49b6b08f 100644 --- a/src/app/routes/partner/recorded/components/record/record.component.ts +++ b/src/app/routes/partner/recorded/components/record/record.component.ts @@ -19,6 +19,13 @@ export class PartnerRecordedRecordComponent implements OnInit { @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; @@ -113,7 +120,7 @@ export class PartnerRecordedRecordComponent implements OnInit { nzContent: this.auditModal, nzFooter: [ { - label: '拒绝', + label: '备注', type: 'default', onClick: () => { this.service @@ -276,48 +283,42 @@ export class PartnerRecordedRecordComponent implements OnInit { private initST(): STColumn[] { return [ { title: '', index: 'key', type: 'checkbox', className: 'text-center' }, - { title: '提现时间', index: 'createTime', width: 180, className: 'text-center' }, - { title: '提现单号', index: 'refundApplyCode', width: 180, className: 'text-center' }, - { title: '网络货运人', index: 'ltdName', width: 220, className: 'text-center' }, - { title: '银行类型', index: 'bankTypeLabel', width: 100, className: 'text-center' }, - { title: '账户类型', index: 'bankTypeLabel', width: 100, className: 'text-center' }, - { title: '账户名称', index: 'bankAccountName', width: 220, 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: '提现金额', + title: '开票金额', index: 'amount', width: 150, type: 'widget', className: 'text-right', widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.amount }) } }, - { title: '提现银行账户', render: 'bankCardNumber', width: 200, className: 'text-center' }, - { title: '提现状态', index: 'refundStatusLabel', width: 100, className: 'text-center' }, - { title: '银行流水号', index: 'bankSerialNumber', width: 160, className: 'text-center' }, - { title: '核心交易流水', index: 'coreSerNo', width: 180, className: 'text-center' }, - { title: '失败原因', index: 'rejectionCause', width: 200, format: item => item.failCause, 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: '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 === '3', - click: item => - this.service.getReceiptUrl(item.receiptUrl, { - bankType: item.bankType, - rmYll: item.userId, - snglFlgCd: item.coreSerNo, - bussType: '06', - ltdId: item.ltdId - }) - }, - { - text: '查看原因', - iif: item => item.refundStatus === '4', - click: item => this.showReason(item) - }, { text: '审核', iif: item => item.refundStatus === '1', From 06cbff566ac0d18f544ce4ae1e4b31838a1281c1 Mon Sep 17 00:00:00 2001 From: Taric Xin Date: Fri, 11 Mar 2022 14:35:47 +0800 Subject: [PATCH 10/10] edit --- package-lock.json | 41 ++ .../add-etp-partner.component.html | 48 +-- .../add-etp-partner.component.ts | 355 ++++++++++-------- .../add-personal-partner.component.html | 45 ++- .../add-personal-partner.component.less | 68 ++++ .../add-personal-partner.component.ts | 335 ++++++++++++++++- 6 files changed, 701 insertions(+), 191 deletions(-) diff --git a/package-lock.json b/package-lock.json index ddf3948b..64c94964 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2879,6 +2879,35 @@ "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", "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": { "version": "3.0.19", "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", "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": { "version": "4.0.8", "resolved": "https://registry.npm.taobao.org/lodash.debounce/download/lodash.debounce-4.0.8.tgz", "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "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": { "version": "4.1.2", "resolved": "https://registry.nlark.com/lodash.memoize/download/lodash.memoize-4.1.2.tgz", diff --git a/src/app/routes/partner/partner-list/components/add-etp-partner/add-etp-partner.component.html b/src/app/routes/partner/partner-list/components/add-etp-partner/add-etp-partner.component.html index 2cfb1621..60e444bd 100644 --- a/src/app/routes/partner/partner-list/components/add-etp-partner/add-etp-partner.component.html +++ b/src/app/routes/partner/partner-list/components/add-etp-partner/add-etp-partner.component.html @@ -1,6 +1,7 @@ - + +
企业基本信息
@@ -14,6 +15,7 @@
万元
+
营业执照法人信息
@@ -41,33 +43,12 @@
- - - -
企业开票信息
+ + +
企业管理员信息
- -
企业管理员信息
-
- - -
-
请上传该企业授权您成为本系统企业管理员的文件的高清照片,需加盖公司印章
-
上传后系统会自动识别并填写
-
-
-
-
- -
-
请上传身份证原件的高清照片,若上传复印件,则需申请人签字;
-
上传后系统会自动识别并填写
-
-
- +
正面照(人像面)
@@ -76,7 +57,7 @@
- +
背面照(国徽面)
@@ -85,9 +66,20 @@
+ + + +
所属城市
+
+ + + +
渠道销售
+
-
+ +
diff --git a/src/app/routes/partner/partner-list/components/add-etp-partner/add-etp-partner.component.ts b/src/app/routes/partner/partner-list/components/add-etp-partner/add-etp-partner.component.ts index 580f9f3d..00540e31 100644 --- a/src/app/routes/partner/partner-list/components/add-etp-partner/add-etp-partner.component.ts +++ b/src/app/routes/partner/partner-list/components/add-etp-partner/add-etp-partner.component.ts @@ -9,7 +9,8 @@ import { SFCascaderWidgetSchema, SFTextareaWidgetSchema, SFDateWidgetSchema, - SFCheckboxWidgetSchema + SFCheckboxWidgetSchema, + SFTreeSelectWidgetSchema } from '@delon/form'; import { NzUploadFile } from 'ng-zorro-antd/upload'; import { of } from 'rxjs'; @@ -45,10 +46,7 @@ const DATECONFIG = { export class AddEtpPartnerComponent implements OnInit { @ViewChild('sf', { static: false }) sf!: SFComponent; - @ViewChild('sf1', { static: false }) - sf1!: SFComponent; - schema: SFSchema = this.initOthersSF(); - schema1: SFSchema = this.initBasicInfoSF(); + schema: SFSchema = this.initBasicInfoSF(); ui: SFUISchema = { '*': { spanLabelFixed: 180, @@ -57,19 +55,9 @@ export class AddEtpPartnerComponent implements OnInit { $_basicInfoTitle: { spanLabelFixed: 0 }, - $title99: { - spanLabelFixed: 0 - }, $_legalPersontitle: { spanLabelFixed: 0 }, - $registrationCapital: { - spanLabelFixed: 180, - grid: { xxl: 13, xl: 18, lg: 22, md: 22 } - }, - $unit: { - grid: { xxl: 6, xl: 6, lg: 2, md: 2 } - }, $_isLoingDate: { spanLabelFixed: 100, grid: { xxl: 6, xl: 6, lg: 4, md: 6 } @@ -77,32 +65,30 @@ export class AddEtpPartnerComponent implements OnInit { }; constructor(private router: Router, public service: PartnerListService) {} - ngOnInit() { - } + ngOnInit() {} submitForm() { - if (!this.sf1.valid || !this.sf.valid) { + if (!this.sf.valid ) { this.sf.validator({ emitError: true }); - this.sf1.validator({ emitError: true }); this.service.msgSrv.warning('请修改填写错误信息'); return; } - const enterpriseRegistrationTime = new Date(this.sf1.value.enterpriseRegistrationTime); - const operatingStartTime = new Date(this.sf1.value.operatingStartTime); + 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.sf1.value.operatingEndTime) { - const operatingEndTime = new Date(this.sf1.value.operatingEndTime); + 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.sf1.value.legalPersonIdentityDTO.validStartTime); - if (this.sf1.value.legalPersonIdentityDTO.validEndTime) { - const validEndTime = new Date(this.sf1.value.legalPersonIdentityDTO.validEndTime); + 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; @@ -112,10 +98,9 @@ export class AddEtpPartnerComponent implements OnInit { const params = {}; Object.assign( params, - { ...this.sf1.value }, { ...this.sf.value }, { - enterpriseAddressCode: this.sf1.value.enterpriseAddressCode[2], + enterpriseAddressCode: this.sf.value.enterpriseAddressCode[2], oftenUsedServices: sfVlaue.oftenUsedServices, registerAddress: sfVlaue.registerAddress, registerPhone: sfVlaue.registerPhone, @@ -161,23 +146,23 @@ export class AddEtpPartnerComponent implements OnInit { if (isFront === 'front') { // 正面 if (res.name) { - this.sf1.setValue('/legalPersonIdentityDTO/name', res.name); + this.sf.setValue('/legalPersonIdentityDTO/name', res.name); } if (res.number) { - this.sf1.setValue('/legalPersonIdentityDTO/certificateType', 0); - this.sf1.setValue('/legalPersonIdentityDTO/certificateNumber', res.number); + this.sf.setValue('/legalPersonIdentityDTO/certificateType', 0); + this.sf.setValue('/legalPersonIdentityDTO/certificateNumber', res.number); } } if (isFront === 'back') { // 背面 if (res.validFrom) { - this.sf1.setValue('/legalPersonIdentityDTO/validStartTime', res.validFrom); + this.sf.setValue('/legalPersonIdentityDTO/validStartTime', res.validFrom); } if (res.validTo) { - this.sf1.setValue('/legalPersonIdentityDTO/validEndTime', res.validTo); - this.sf1.setValue('/legalPersonIdentityDTO/_isLoingDate', false); + this.sf.setValue('/legalPersonIdentityDTO/validEndTime', res.validTo); + this.sf.setValue('/legalPersonIdentityDTO/_isLoingDate', false); } else { - this.sf1.setValue('/legalPersonIdentityDTO/_isLoingDate', true); + this.sf.setValue('/legalPersonIdentityDTO/_isLoingDate', true); } } } @@ -202,36 +187,33 @@ export class AddEtpPartnerComponent implements OnInit { this.service.request(this.service.$api_ocr_recognize_business_license, { businessLicenseUrl: imgurl }).subscribe(res => { if (res) { if (res.registrationNumber) { - this.sf1.setValue('/unifiedSocialCreditCode', res.registrationNumber); + this.sf.setValue('/unifiedSocialCreditCode', res.registrationNumber); } if (res.name) { - this.sf1.setValue('/enterpriseName', res.name); + this.sf.setValue('/enterpriseName', res.name); } if (res.type) { - this.sf1.setValue('/enterpriseType', res.type); + this.sf.setValue('/enterpriseType', res.type); } if (res.addressRegionCodes) { - this.sf1.setValue('/enterpriseAddressCode', res.addressRegionCodes); + this.sf.setValue('/enterpriseAddressCode', res.addressRegionCodes); } if (res.address) { - this.sf1.setValue('/enterpriseAddress', res.address); - } - if (res.registeredCapital) { - this.sf1.setValue('/registrationCapital', res.registeredCapital); + this.sf.setValue('/enterpriseAddress', res.address); } if (res.foundDate) { - this.sf1.setValue('/enterpriseRegistrationTime', res.foundDate); + this.sf.setValue('/enterpriseRegistrationTime', res.foundDate); } if (res.businessTermStartDate) { - this.sf1.setValue('/operatingStartTime', res.businessTermStartDate); + this.sf.setValue('/operatingStartTime', res.businessTermStartDate); } if (res.businessTermEndDate) { - this.sf1.setValue('/operatingEndTime', res.businessTermEndDate); + this.sf.setValue('/operatingEndTime', res.businessTermEndDate); } else { - this.sf1.setValue('/_isLoingDate', true); + this.sf.setValue('/_isLoingDate', true); } if (res.businessScope) { - this.sf1.setValue('/businessScope', res.businessScope); + this.sf.setValue('/businessScope', res.businessScope); } } }); @@ -244,8 +226,9 @@ export class AddEtpPartnerComponent implements OnInit { private initBasicInfoSF(): SFSchema { return { properties: { + // 企业基本信息 _basicInfoTitle: { title: '', type: 'string', ui: { widget: 'custom' } }, - _licenseTips: { 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', @@ -255,7 +238,7 @@ export class AddEtpPartnerComponent implements OnInit { descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过5M', change: args => { if (args.type === 'success') { - this.sf1.setValue('/licensePhoto', args.fileList[0].response.data.fullFilePath); + this.sf.setValue('/licensePhoto', args.fileList[0].response.data.fullFilePath); this.checkBusinessLicense(args.fileList[0].response.data.fullFilePath); } } @@ -310,7 +293,7 @@ export class AddEtpPartnerComponent implements OnInit { required: '请选择截止日期' }, change: i => { - this.sf1?.setValue('/_isLoingDate', false); + this.sf?.setValue('/_isLoingDate', false); } } as SFDateWidgetSchema }, @@ -320,15 +303,16 @@ export class AddEtpPartnerComponent implements OnInit { ui: { class: 'input-back', widget: 'checkbox', - change: i => this.sf1?.setValue('/operatingEndTime', null) + 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' } }, + _certificatePhototips: { title: '法定代表人证件照', type: 'string', ui: { widget: 'custom' }, default: true }, _certificatePhotoExmplateA: { title: '', type: 'string', ui: { widget: 'custom', offsetControl: 6 } }, certificatePhotoFrontWatermark: { type: 'string', @@ -338,7 +322,7 @@ export class AddEtpPartnerComponent implements OnInit { descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过5M', change: args => { if (args.type === 'success') { - this.sf1.setValue('/legalPersonIdentityDTO/certificatePhotoFront', args.fileList[0].response.data.fullFilePath); + this.sf.setValue('/legalPersonIdentityDTO/certificatePhotoFront', args.fileList[0].response.data.fullFilePath); this.checkIdCard(args.fileList[0].response.data.fullFilePath, 'front', 1); } } @@ -355,7 +339,7 @@ export class AddEtpPartnerComponent implements OnInit { descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过5M', change: args => { if (args.type === 'success') { - this.sf1.setValue('/legalPersonIdentityDTO/certificatePhotoBack', args.fileList[0].response.data.fullFilePath); + this.sf.setValue('/legalPersonIdentityDTO/certificatePhotoBack', args.fileList[0].response.data.fullFilePath); this.checkIdCard(args.fileList[0].response.data.fullFilePath, 'back', 1); } } @@ -420,7 +404,7 @@ export class AddEtpPartnerComponent implements OnInit { required: '请选择截止日期' }, change: i => { - this.sf1?.setValue('/legalPersonIdentityDTO/_isLoingDate', false); + this.sf?.setValue('/legalPersonIdentityDTO/_isLoingDate', false); } } as SFDateWidgetSchema }, @@ -432,124 +416,177 @@ export class AddEtpPartnerComponent implements OnInit { grid: { span: 6 }, class: 'input-back', widget: 'checkbox', - change: i => this.sf1?.setValue('/legalPersonIdentityDTO/validEndTime', null) + change: i => this.sf?.setValue('/legalPersonIdentityDTO/validEndTime', null) } as SFCheckboxWidgetSchema } }, - required: ['certificatePhotoFront', 'certificatePhotoBack', 'name', 'certificateType', 'certificateNumber', 'validStartTime'] - } - }, - required: [ - 'licensePhotoWatermark', - 'unifiedSocialCreditCode', - 'enterpriseName', - 'enterpriseType', - 'enterpriseAddressCode', - 'enterpriseAddress', - 'registrationCapital', - 'enterpriseRegistrationTime', - 'operatingStartTime', - 'businessScope' - ] - }; - } - - private initOthersSF(): SFSchema { - return { - properties: { - title99: { 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: '手机号格式错误' } - } + required: [ + '_certificatePhototips', + 'certificatePhotoFront', + 'certificatePhotoBack', + 'name', + 'certificateType', + 'certificateNumber', + 'validStartTime' + ] }, - tipsA: { - title: '企业管理员证件照', - type: 'string', - ui: { - widget: 'custom' - } - }, - 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); + // 企业管理员信息 + 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: '手机号格式错误' } } - } - } as SFUploadWidgetSchema - }, - tipsB: { - 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); + }, + _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 } - } as SFUploadWidgetSchema + }, + required: ['_adminCertificatePhotoTipsA', 'adminMobile', 'name', 'certificateNumber','operatingStartTime'] }, - name: { - title: '企业管理员姓名', + // 所属城市 + _addressTitle: { title: '', type: 'string', ui: { widget: 'custom' } }, + status3: { 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: '请输入企业管理员身份证号' - } - }, - - title1: { title: '', type: 'string', ui: { widget: 'custom' } }, - createBank: { title: '所属城市', - type: 'string', - ui: { grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, placeholder: '请输入银行账号' } + 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, }, - - title3: { title: '', type: 'string', ui: { widget: 'custom' } }, - bankAccount: { + // 渠道销售 + _channelTitle: { title: '', type: 'string', ui: { widget: 'custom' } }, + channel: { title: '渠道销售邀请码', type: 'string', - ui: { grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, placeholder: '请输入银行账号' } + minLength: 1, + maxLength: 100, + ui: { + grid: { xxl: 13, xl: 18, lg: 24, md: 24 }, + placeholder: '请输入渠道销售邀请码', + errors: { + required: '请输入渠道销售邀请码' + } + } } }, - required: ['createBank', 'bankAccount', 'adminMobile', 'name', 'certificateNumber', 'tipsD', 'creditPhoto'] + required: ['_licenseTips', 'licensePhotoWatermark', 'unifiedSocialCreditCode', 'enterpriseName', 'operatingStartTime', 'status3','channel'] }; } } diff --git a/src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.html b/src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.html index 8245d202..e476071d 100644 --- a/src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.html +++ b/src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.html @@ -1 +1,44 @@ -

add-personal-partner works!

+ + + + + +
合伙人信息
+
+ +
+
+
正面照(人像面)
+
示例
+
+
+
+
+ +
+
+
背面照(国徽面)
+
示例
+
+
+
+
+ + + +
所属城市
+
+ + + +
渠道销售
+
+
+ + +
+ + +
+
\ No newline at end of file diff --git a/src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.less b/src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.less index e69de29b..6b70e074 100644 --- a/src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.less +++ b/src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.less @@ -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; + } + } + } + + } + } \ No newline at end of file diff --git a/src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.ts b/src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.ts index 6d31529c..ed2eac4f 100644 --- a/src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.ts +++ b/src/app/routes/partner/partner-list/components/add-personal-partner/add-personal-partner.component.ts @@ -1,4 +1,32 @@ -import { Component, OnInit } from '@angular/core'; +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', @@ -6,10 +34,311 @@ import { Component, OnInit } from '@angular/core'; 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() { } + constructor(private router: Router, public service: PartnerListService) {} + ngOnInit() {} - ngOnInit(): void { + 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' + ] + }; + } }