From 06cbff566ac0d18f544ce4ae1e4b31838a1281c1 Mon Sep 17 00:00:00 2001 From: Taric Xin Date: Fri, 11 Mar 2022 14:35:47 +0800 Subject: [PATCH 1/5] 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' + ] + }; + } } From 3b976844f0774b4d03fb526c4d308e4a82a0132a Mon Sep 17 00:00:00 2001 From: Lingzi Date: Fri, 11 Mar 2022 14:36:29 +0800 Subject: [PATCH 2/5] fix bug --- .../components/freight/list/list.component.ts | 161 +++++++++++++++++- src/assets/mocks/menu-data.json | 14 ++ 2 files changed, 168 insertions(+), 7 deletions(-) diff --git a/src/app/routes/usercenter/components/freight/list/list.component.ts b/src/app/routes/usercenter/components/freight/list/list.component.ts index 625cffaf..8f071066 100644 --- a/src/app/routes/usercenter/components/freight/list/list.component.ts +++ b/src/app/routes/usercenter/components/freight/list/list.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit, ViewChild } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { STChange, STColumn, STColumnBadge, STComponent, STData, STRequestOptions } from '@delon/abc/st'; -import { SFComponent, SFSchema, SFUISchema } from '@delon/form'; +import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form'; import { DynamicSettingModalComponent, ShipperBaseService } from '@shared'; import { NzModalService } from 'ng-zorro-antd/modal'; import { AccountDetailComponent } from 'src/app/shared/components/account-detail/account-detail.component'; @@ -116,7 +116,124 @@ export class FreightComponentsListComponent implements OnInit { showRequired: false } }, - + lockedStatus: { + type: 'string', + title: '企业类型', + enum: [ + { label: '全部', value: '' }, + { label: '物流企业', value: 0 } + ], + default: '', + ui: { + widget: 'select', + visibleIf: { + expand: (value: boolean) => value + } + } + }, + lockedStatus8: { + type: 'string', + title: '公司所在地', + enum: [ + { label: '全部', value: '' }, + { label: '物流企业', value: 0 } + ], + default: '', + ui: { + widget: 'select', + visibleIf: { + expand: (value: boolean) => value + } + } + }, + lockedStatus7: { + type: 'string', + title: '常用服务', + enum: [ + { label: '全部', value: '' }, + { label: '整车服务', value: 0 }, + { label: '大宗服务', value: 1 } + ], + default: '', + ui: { + widget: 'select', + visibleIf: { + expand: (value: boolean) => value + } + } + }, + lockedStatus6: { + type: 'string', + title: '客户类型', + enum: [ + { label: '全部', value: '' }, + { label: '直客', value: 0 }, + { label: '渠道客户', value: 1 } + ], + default: '', + ui: { + widget: 'select', + visibleIf: { + expand: (value: boolean) => value + } + } + }, + contactName5: { + title: '渠道销售', + type: 'string', + ui: { + placeholder: '请输入', + showRequired: false + } + }, + contactName4: { + title: '合伙人', + type: 'string', + ui: { + placeholder: '请输入', + showRequired: false + } + }, + contactName3: { + title: '客服人员', + type: 'string', + ui: { + placeholder: '请输入', + showRequired: false + } + }, + contactName2: { + title: '审核人', + type: 'string', + ui: { + placeholder: '请输入', + showRequired: false + } + }, + applyDate: { + type: 'string', + title: '申请时间', + ui: { + widget: 'sl-from-to', + type: 'date', + format: 'yyyy-MM-dd', + visibleIf: { + _$expand: (value: boolean) => value, + }, + } as SFDateWidgetSchema, + }, + applyDate1: { + type: 'string', + title: '审核时间', + ui: { + widget: 'sl-from-to', + type: 'date', + format: 'yyyy-MM-dd', + visibleIf: { + _$expand: (value: boolean) => value, + }, + } as SFDateWidgetSchema, + }, networkTransporter: { type: 'string', title: '网络货运人', @@ -138,6 +255,22 @@ export class FreightComponentsListComponent implements OnInit { } } }, + lockedStatus3: { + type: 'string', + title: '企业状态', + enum: [ + { label: '全部', value: '' }, + { label: '正常', value: 0 }, + { label: '冻结', value: 1 } + ], + default: '', + ui: { + widget: 'select', + visibleIf: { + expand: (value: boolean) => value + } + } + }, source: { type: 'string', title: '注册渠道', @@ -155,13 +288,13 @@ export class FreightComponentsListComponent implements OnInit { } } }, - lockedStatus: { + source2: { type: 'string', - title: '企业状态', + title: '证件是否过期', enum: [ { label: '全部', value: '' }, - { label: '正常', value: 0 }, - { label: '冻结', value: 1 } + { label: '是', value: 1 }, + { label: '否', value: 2 } ], default: '', ui: { @@ -170,7 +303,21 @@ export class FreightComponentsListComponent implements OnInit { expand: (value: boolean) => value } } - } + }, + source1: { + type: 'string', + title: '网络货运人', + enum: [ + { label: '全部', value: '' }, + ], + default: '', + ui: { + widget: 'select', + visibleIf: { + expand: (value: boolean) => value + } + } + }, } }; this.ui = { '*': { spanLabelFixed: 110, grid: { lg: 8, md: 12, sm: 12, xs: 24 }, enter: () => this.st.load() } }; diff --git a/src/assets/mocks/menu-data.json b/src/assets/mocks/menu-data.json index 473d4c2f..0f0ab51a 100644 --- a/src/assets/mocks/menu-data.json +++ b/src/assets/mocks/menu-data.json @@ -574,6 +574,20 @@ "hide": true } ] + }, + { + "text": "轮播图管理", + "link": "/partner/scroll-img/list", + "hide": true + }, + { + "text": "知识库管理", + "icon": "iconfont icon-yundan-copy", + "group": true, + "children": [{ + "text": "banner管理", + "link": "/knowledge/banner" + }] } ] } From 05dfb81a20e750d1c7fd0930222d94d80af940e1 Mon Sep 17 00:00:00 2001 From: wangshiming Date: Fri, 11 Mar 2022 14:50:43 +0800 Subject: [PATCH 3/5] fix bug --- .../rebate-setting.component.html | 10 +++- .../rebate-setting.component.ts | 50 +++++++++++-------- 2 files changed, 36 insertions(+), 24 deletions(-) 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 index 50b366ea..a4864e4d 100644 --- 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 @@ -4,8 +4,8 @@ * @Author : Shiming * @Date : 2022-02-24 20:09:49 * @LastEditors : Shiming - * @LastEditTime : 2022-03-10 15:12:03 - * @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-record\\rebate-record.component.html + * @LastEditTime : 2022-03-11 14:45:48 + * @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-setting\\rebate-setting.component.html * Copyright (C) 2022 huzhenhong. All rights reserved. --> @@ -31,6 +31,12 @@ + +
+
+ +
+
this.viewEvaluate(_record), - } + }, + { + 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) { + this.modal.confirm({ + nzTitle: '是否禁用该配置?', + nzOnOk: () => { + } }); } /** - *异常反馈 + *查看 */ feedback(item?: any) { const modal = this.modal.create({ - nzTitle: '异常反馈', + nzTitle: '查看', nzWidth: 580, nzContent: ParterRebateManageMenAbnormalFeedbackComponent, nzComponentParams: { i: item }, @@ -161,6 +164,9 @@ export class ParterRebateManageMentSettingComponent implements OnInit { if (res) { } }); + } + configAction() { + } /** * 重置表单 From 79a1e172dd4d5ad943cf408ecc8fb12bb9065aa9 Mon Sep 17 00:00:00 2001 From: Lingzi Date: Fri, 11 Mar 2022 15:16:02 +0800 Subject: [PATCH 4/5] fix bug --- src/styles.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/styles.less b/src/styles.less index a25a53de..2464d9a8 100644 --- a/src/styles.less +++ b/src/styles.less @@ -47,4 +47,4 @@ input[type="number"] { .break-word-all { word-break: break-all; word-wrap : break-word; -} \ No newline at end of file +} From 2d4eb18350a597a1acec3851c6e439f2fae91a80 Mon Sep 17 00:00:00 2001 From: wangshiming Date: Fri, 11 Mar 2022 15:28:41 +0800 Subject: [PATCH 5/5] fix bug --- .../routes/partner/partner-routing.module.ts | 6 +- src/app/routes/partner/partner.module.ts | 11 +- .../rebate-setting/add/add.component.html | 16 ++ .../rebate-setting/add/add.component.ts | 25 +++ .../rebate-setting.component.ts | 2 +- .../insurance-table/insurance-table.module.ts | 2 +- .../shared/components/rebate-table/index.ts | 13 ++ .../rebate-table/rebate-table.component.html | 92 +++++++++ .../rebate-table/rebate-table.component.less | 19 ++ .../rebate-table/rebate-table.component.ts | 195 ++++++++++++++++++ .../rebate-table/rebate-table.module.ts | 29 +++ .../rebate-table/rebate-table.service.ts | 18 ++ src/app/shared/index.ts | 3 +- 13 files changed, 422 insertions(+), 9 deletions(-) create mode 100644 src/app/routes/partner/rebate-management/components/rebate-setting/add/add.component.html create mode 100644 src/app/routes/partner/rebate-management/components/rebate-setting/add/add.component.ts create mode 100644 src/app/shared/components/rebate-table/index.ts create mode 100644 src/app/shared/components/rebate-table/rebate-table.component.html create mode 100644 src/app/shared/components/rebate-table/rebate-table.component.less create mode 100644 src/app/shared/components/rebate-table/rebate-table.component.ts create mode 100644 src/app/shared/components/rebate-table/rebate-table.module.ts create mode 100644 src/app/shared/components/rebate-table/rebate-table.service.ts diff --git a/src/app/routes/partner/partner-routing.module.ts b/src/app/routes/partner/partner-routing.module.ts index 5fcfa3a2..42af70fc 100644 --- a/src/app/routes/partner/partner-routing.module.ts +++ b/src/app/routes/partner/partner-routing.module.ts @@ -4,7 +4,7 @@ * @Author : Shiming * @Date : 2022-02-24 15:07:57 * @LastEditors : Shiming - * @LastEditTime : 2022-02-24 15:23:48 + * @LastEditTime : 2022-03-11 15:22:36 * @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\partner-routing.module.ts * Copyright (C) 2022 huzhenhong. All rights reserved. */ @@ -37,6 +37,7 @@ import { AddEtpPartnerComponent } from './partner-list/components/add-etp-partne import { AddPersonalPartnerComponent } from './partner-list/components/add-personal-partner/add-personal-partner.component'; import { PartnerDetailComponent } from './partner-list/components/partner-detail/partner-detail.component'; import { PartnerListComponent } from './partner-list/components/index/partner-list.component'; +import { ParterRebateManageMentAddComponent } from './rebate-management/components/rebate-setting/add/add.component'; const routes: Routes = [ { @@ -72,7 +73,8 @@ const routes: Routes = [ children: [ { path: 'particulars', component: ParterRebateManageMentParticularsComponent }, { path: 'record', component: ParterRebateManageMentRecordComponent }, - { path: 'setting', component: ParterRebateManageMentSettingComponent } + { path: 'setting', component: ParterRebateManageMentSettingComponent }, + { path: 'setting/add/:id', component: ParterRebateManageMentAddComponent }, ] }, { diff --git a/src/app/routes/partner/partner.module.ts b/src/app/routes/partner/partner.module.ts index ac40e6ac..6eadaab1 100644 --- a/src/app/routes/partner/partner.module.ts +++ b/src/app/routes/partner/partner.module.ts @@ -4,13 +4,13 @@ * @Author : Shiming * @Date : 2022-03-09 14:34:55 * @LastEditors : Shiming - * @LastEditTime : 2022-03-09 14:56:46 + * @LastEditTime : 2022-03-11 15:28:01 * @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\partner.module.ts * Copyright (C) 2022 huzhenhong. All rights reserved. */ import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; -import { SharedModule } from '@shared'; +import { rebateTableModule, SharedModule } from '@shared'; import { PartnerAccountManagementAccountDetailComponent } from './account-management/components/account-detail/account-detail.component'; import { PartnerAccountManagementListComponent } from './account-management/components/list/list.component'; import { PartnerAccountManagementRecordedDetailComponent } from './account-management/components/recorded-detail/recorded-detail.component'; @@ -49,6 +49,7 @@ import { AddPersonalPartnerComponent } from './partner-list/components/add-perso import { ParterRebateManageMenAbnormalFeedbackComponent } from './rebate-management/model/abnormal-feedback/abnormal-feedback.component'; import { PartnerRecordedDetailComponent } from './recorded/components/detail/detail.component'; import { PartnerRecordedRecordComponent } from './recorded/components/record/record.component'; +import { ParterRebateManageMentAddComponent } from './rebate-management/components/rebate-setting/add/add.component'; const COMPONENTS: any[] = [ PartnerBusinessStatisticsIndexComponent, @@ -86,13 +87,15 @@ const COMPONENTS: any[] = [ ParterRebateManageMenAbnormalFeedbackComponent, ParterRebateManageMentSettingComponent, PartnerAuditModalComponent, + ParterRebateManageMentAddComponent, AddEtpPartnerComponent, - AddPersonalPartnerComponent + AddPersonalPartnerComponent, + ]; @NgModule({ declarations: [...COMPONENTS], - imports: [CommonModule, PartnerRoutingModule, SharedModule], + imports: [CommonModule, PartnerRoutingModule, SharedModule,rebateTableModule], providers: [PartnerListService] }) export class PartnerModule { } diff --git a/src/app/routes/partner/rebate-management/components/rebate-setting/add/add.component.html b/src/app/routes/partner/rebate-management/components/rebate-setting/add/add.component.html new file mode 100644 index 00000000..b3c8f933 --- /dev/null +++ b/src/app/routes/partner/rebate-management/components/rebate-setting/add/add.component.html @@ -0,0 +1,16 @@ + + + + + 12121212 + + diff --git a/src/app/routes/partner/rebate-management/components/rebate-setting/add/add.component.ts b/src/app/routes/partner/rebate-management/components/rebate-setting/add/add.component.ts new file mode 100644 index 00000000..ebfe0bce --- /dev/null +++ b/src/app/routes/partner/rebate-management/components/rebate-setting/add/add.component.ts @@ -0,0 +1,25 @@ +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'; +@Component({ + selector: 'app-parter-channel-rebate-management-add', + templateUrl: './add.component.html' +}) +export class ParterRebateManageMentAddComponent implements OnInit { + + constructor( + public router: Router, + public ar: ActivatedRoute, + public service: RebateManagementService, + private modal: NzModalService, + public shipperservice: ShipperBaseService, + ) {} + + ngOnInit() { + } +} 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 index b655f9a3..09f35ff9 100644 --- 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 @@ -166,7 +166,7 @@ export class ParterRebateManageMentSettingComponent implements OnInit { }); } configAction() { - + this.router.navigate(['/partner/rebate/setting/add', '']) } /** * 重置表单 diff --git a/src/app/shared/components/insurance-table/insurance-table.module.ts b/src/app/shared/components/insurance-table/insurance-table.module.ts index ab85e526..28711efd 100644 --- a/src/app/shared/components/insurance-table/insurance-table.module.ts +++ b/src/app/shared/components/insurance-table/insurance-table.module.ts @@ -13,11 +13,11 @@ import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { NzInputNumberModule } from 'ng-zorro-antd/input-number'; import { NzTableModule } from 'ng-zorro-antd/table'; -import { InsuranceTableComponent } from './insurance-table.component'; import { NzPopconfirmModule } from 'ng-zorro-antd/popconfirm'; import { NzInputModule } from 'ng-zorro-antd/input'; import { DelonFormModule } from '@delon/form'; import { NzButtonModule } from 'ng-zorro-antd/button'; +import { InsuranceTableComponent } from './insurance-table.component'; const COMPONENTS = [InsuranceTableComponent]; const MODULES = [NzTableModule, NzInputNumberModule, NzPopconfirmModule, NzInputModule, NzButtonModule, DelonFormModule]; diff --git a/src/app/shared/components/rebate-table/index.ts b/src/app/shared/components/rebate-table/index.ts new file mode 100644 index 00000000..9b459de3 --- /dev/null +++ b/src/app/shared/components/rebate-table/index.ts @@ -0,0 +1,13 @@ +/* + * @Description : + * @Version : 1.0 + * @Author : Shiming + * @Date : 2022-01-25 20:20:07 + * @LastEditors : Shiming + * @LastEditTime : 2022-01-26 11:05:44 + * @FilePath : \\tms-obc-web\\src\\app\\shared\\components\\insurance-table\\index.ts + * Copyright (C) 2022 huzhenhong. All rights reserved. + */ +export * from './rebate-table.module' +export * from './rebate-table.service' +export * from './rebate-table.component' \ No newline at end of file diff --git a/src/app/shared/components/rebate-table/rebate-table.component.html b/src/app/shared/components/rebate-table/rebate-table.component.html new file mode 100644 index 00000000..a7ab6f02 --- /dev/null +++ b/src/app/shared/components/rebate-table/rebate-table.component.html @@ -0,0 +1,92 @@ + +
+
+ +
+ + + + + + + + + + + +
+ + + + 险种 + 普货-基本险 + 普货-综合险 + 操作 + + + + + +
+
+ 公里数(km) +
+
|
+
+ + + + + (含) + +
+
+ + + +
+ + + + + + % + +
+ + +
+ + + + +
+ + + 删除 + + + +
+ + +
+
\ No newline at end of file diff --git a/src/app/shared/components/rebate-table/rebate-table.component.less b/src/app/shared/components/rebate-table/rebate-table.component.less new file mode 100644 index 00000000..bebea5bf --- /dev/null +++ b/src/app/shared/components/rebate-table/rebate-table.component.less @@ -0,0 +1,19 @@ +:host::ng-deep { + nz-input-number { + width: 85px; + + input { + width : 100%; + margin: 0; + } + + .ant-input-number-handler-wrap { + display: none; + } + + } + .ant-input-group { + display: -webkit-inline-box !important; + } + +} \ No newline at end of file diff --git a/src/app/shared/components/rebate-table/rebate-table.component.ts b/src/app/shared/components/rebate-table/rebate-table.component.ts new file mode 100644 index 00000000..75b3768a --- /dev/null +++ b/src/app/shared/components/rebate-table/rebate-table.component.ts @@ -0,0 +1,195 @@ +import { debounceTime } from 'rxjs/operators'; +import { Subject } from 'rxjs'; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core'; +import { BaseService } from '@shared'; +import { SFComponent, SFSchema, SFUISchema } from '@delon/form'; + +@Component({ + selector: 'app-rebate-table', + templateUrl: './rebate-table.component.html', + styleUrls: ['./rebate-table.component.less'] +}) +export class RebateTableComponent implements OnInit { + data: any[] = []; + headers: any[] = []; + sfdata: any; // 货源单设置回显 + + @ViewChild('sf', { static: false }) sf!: SFComponent; + schema: SFSchema = {}; + ui!: SFUISchema; + + formatterDollar = (value: number): string => `${value}`; + minrebatePrice: number = 0; + changeSub = new Subject(); + constructor(public service: BaseService, private cdr: ChangeDetectorRef) {} + + ngOnInit(): void { + this.loadData(); + this.initSF() + this.changeEndKmAction(); + this.minrebatePrice = 1000 + } + + loadData() { + this.service.request('/api/mdc/cuc/rebateConfig/list').subscribe(res => { + if (res) { + console.log(res); + this.data = res; + this.cdr.detectChanges(); + } + }); + this.service.request('/api/mdc/pbc/sysConfigItem/findItemValueByItemKeys', [ + "rebate.config.minrebatePrice" + ]).subscribe(res => { + if (res) { + console.log(res); + this.minrebatePrice = Number(res[0].itemValue) + } + }); + } + initSF() { + this.schema = { + properties: { + freightPrice: { + type: 'string', + title: '单票投保最低保费', + ui: { + widget: 'custom', + placeholder: '请输入', + errors: { required: '请填写' } + } + }, + }, + required: ['freightPrice'] + }; + this.ui = { + '*': { + spanLabelFixed: 160, + grid: { span: 24 } + }, + $freightPrice: { + grid: { span: 8 } + }, + }; + } + /** + * 修改结束车长 + * @param event 车长 + * @param i 下标 + */ + changeEndLength(event: any, i: number) { + if (event <= this.headers[i].startLength) { + this.headers[i].endLength = this.headers[i].startLength + 1; + this.changeNextStartLength(event, i + 1); + return; + } + this.headers[i].endLength = event; + this.changeNextStartLength(event, i + 1); + } + + /** + * 修改结束公里数 + * @param event 车长 + * @param i 下标 + */ + changeEndKm(event: any, i: number) { + if (event) { + console.log(event); + + this.changeSub.next(`${event},${i}`); + } + } + changeEndKmAction() { + this.changeSub.pipe(debounceTime(500)).subscribe((res: string) => { + if (res) { + const paras = res.split(','); + const num = Number(paras[0]); + const i = Number(paras[1]); + + if (num <= this.data[i].startKm) { + this.data[i].endKm = null; + setTimeout(() => { + this.data[i].endKm = this.data[i].startKm + 1 ; + }, 0); + this.changeNextStartKm(this.data[i].startKm + 1, i + 1); + return; + } + this.data[i].endKm = num; + this.changeNextStartKm(num, i + 1); + } + }); + } + + add() { + console.log(this.data); + + const tem = this.data[this.data?.length - 1]; + if (tem && tem.endKm) { + this.data.push({ + endKm: '', + startKm: tem.endKm + }); + this.data = [...this.data]; + } else { + this.service.msgSrv.warning('请填写完整公里数'); + } + } + + deleteRow(index: number) { + console.log(index); + var newArr = this.data.concat(); + newArr.splice(this.data.length-1,1) + // this.data = this.data.pop() + console.log(newArr); + this.data = [...newArr]; + } + + save() { + if(!this.minrebatePrice) { + this.service.msgSrv.error('必填项为空!') + return + } + let params= { + minrebatePrice: this.minrebatePrice, + rebateConfigDTOS: this.data + } + console.log(params); + this.service.request('/api/mdc/cuc/rebateConfig/saveBatch', params).subscribe(res => { + if (res) { + console.log(res); + this.service.msgSrv.success('修改成功'); + this.loadData(); + } + }); + } + + /** + * 遍历同步后置位车长 + * @param event 车长 + * @param i 下标 + */ + private changeNextStartLength(event: number, i: number) { + if (this.headers[i]) { + this.headers[i].startLength = event; + if (this.headers[i].endLength <= event) { + this.headers[i].endLength = this.headers[i].startLength + 0.5; + this.changeNextStartLength(event + 0.5, i + 1); + } + } + } + + /** + * 遍历同步后置位公里数 + * @param event 车长 + * @param i 下标 + */ + private changeNextStartKm(event: number, i: number) { + if (this.data[i]) { + this.data[i].startKm = event; + if (this.data[i].endKm <= event) { + this.data[i].endKm = this.data[i].startKm + 1; + this.changeNextStartKm(event + 1, i + 1); + } + } + } +} diff --git a/src/app/shared/components/rebate-table/rebate-table.module.ts b/src/app/shared/components/rebate-table/rebate-table.module.ts new file mode 100644 index 00000000..6e65e35b --- /dev/null +++ b/src/app/shared/components/rebate-table/rebate-table.module.ts @@ -0,0 +1,29 @@ +/* + * @Description : + * @Version : 1.0 + * @Author : Shiming + * @Date : 2022-01-25 20:23:54 + * @LastEditors : Shiming + * @LastEditTime : 2022-02-11 17:20:49 + * @FilePath : \\tms-obc-web\\src\\app\\shared\\components\\rebate-table\\rebate-table.module.ts + * Copyright (C) 2022 huzhenhong. All rights reserved. + */ +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { NzInputNumberModule } from 'ng-zorro-antd/input-number'; +import { NzTableModule } from 'ng-zorro-antd/table'; +import { RebateTableComponent } from './rebate-table.component'; +import { NzPopconfirmModule } from 'ng-zorro-antd/popconfirm'; +import { NzInputModule } from 'ng-zorro-antd/input'; +import { DelonFormModule } from '@delon/form'; +import { NzButtonModule } from 'ng-zorro-antd/button'; +const COMPONENTS = [RebateTableComponent]; +const MODULES = [NzTableModule, NzInputNumberModule, NzPopconfirmModule, NzInputModule, NzButtonModule, DelonFormModule]; + +@NgModule({ + declarations: COMPONENTS, + imports: [CommonModule, FormsModule, ...MODULES], + exports: COMPONENTS +}) +export class rebateTableModule {} diff --git a/src/app/shared/components/rebate-table/rebate-table.service.ts b/src/app/shared/components/rebate-table/rebate-table.service.ts new file mode 100644 index 00000000..ed67d9fb --- /dev/null +++ b/src/app/shared/components/rebate-table/rebate-table.service.ts @@ -0,0 +1,18 @@ +/* + * @Description : + * @Version : 1.0 + * @Author : Shiming + * @Date : 2022-01-25 20:21:04 + * @LastEditors : Shiming + * @LastEditTime : 2022-01-25 20:35:52 + * @FilePath : \\tms-obc-web\\src\\app\\shared\\components\\insurance-table\\insurance-table.service.ts + * Copyright (C) 2022 huzhenhong. All rights reserved. + */ +import { Injectable } from '@angular/core'; + + + +@Injectable({ providedIn: 'root' }) + +export class RebateService { +} diff --git a/src/app/shared/index.ts b/src/app/shared/index.ts index c61dfbdd..d8f2d2d9 100644 --- a/src/app/shared/index.ts +++ b/src/app/shared/index.ts @@ -1,7 +1,7 @@ /* * @Author: your name * @Date: 2021-11-29 10:04:12 - * @LastEditTime : 2022-02-11 14:31:22 + * @LastEditTime : 2022-03-11 15:12:20 * @LastEditors : Shiming * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @FilePath : \\tms-obc-web\\src\\app\\shared\\index.ts @@ -21,6 +21,7 @@ export * from './components/dict-select/index'; export * from './components/dynamic-setting'; export * from './components/singlepage-setting'; export * from './components/insurance-table/index'; +export * from './components/rebate-table/index'; // Utils export * from './utils';