Files
bbq/src/app/routes/sys-setting/components/network-freight/new/new.component.ts
wangshiming 2660fea880 fix bug
2022-02-18 10:28:28 +08:00

546 lines
17 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { Component, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { apiConf } from '@conf/api.conf';
import {
SFCascaderWidgetSchema,
SFCheckboxWidgetSchema,
SFComponent,
SFDateWidgetSchema,
SFSchema,
SFTextareaWidgetSchema,
SFUISchema,
SFUploadWidgetSchema
} from '@delon/form';
import { NzUploadFile } from 'ng-zorro-antd/upload';
import { of } from 'rxjs';
import { SystemService } from '../../../services/system.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-network-freight-new-component',
templateUrl: './new.component.html',
styleUrls: ['./new.component.less']
})
export class NetworkFreightNewComponent 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 }
},
$title1: {
spanLabelFixed: 0
},
$title99: {
spanLabelFixed: 0
},
$title2: {
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: SystemService) {}
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 sfVlaue = this.sf1.value;
const params: any = {};
Object.assign(
params,
{
...this.sf.value ,
enterpriseInfoDTO: this.sf1.value
}
);
console.log(params);
console.log(this.sf.value);
console.log(this.sf1.value);
params.enterpriseInfoDTO.enterpriseAddressCode = this.sf1.value?.enterpriseAddressCode?.[2];
this.service.request(this.service.$api_networkTransporter_save, 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 });
}
// 识别身份证 参数isFrontfront-正面、back-背面type0-申请人身份证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 (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.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: {
title1: { title: '', type: 'string', ui: { widget: 'custom' } },
tips: { title: '', type: 'string', ui: { widget: 'custom', offsetControl: 6 } },
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
},
enterpriseName: {
title: '公司名称',
type: 'string',
minLength: 1,
maxLength: 100,
ui: {
grid: { xxl: 13, xl: 18, lg: 24, md: 24 },
placeholder: '请输入公司名称',
errors: {
required: '请输入公司名称'
}
}
},
unifiedSocialCreditCode: {
title: '统一社会信用代码',
type: 'string',
minLength: 1,
maxLength: 30,
ui: {
grid: { xxl: 13, xl: 18, lg: 24, md: 24 },
optionalHelp:
'为了企业用户的使用体验,若公司代码即统一社会信用代码已在本应用其他关联平台注册,则此处填写的公司资料将同步更新至对应已注册的平台',
placeholder: '请输入营业执照上的统一社会信用代码',
errors: {
required: '请输入18位公司代码'
}
}
},
certificateType2: {
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'
}
},
enterpriseAddressCode: {
type: 'number',
title: '营业执照所在地',
ui: {
grid: { xxl: 13, xl: 18, lg: 24, md: 24 },
widget: 'cascader',
valueProperty: 'regionCode',
labelProperty: 'name',
asyncData: (node: any, index: any) => {
return new Promise(resolve => {
this.getRegionDetailByCode(node?.regionCode || '').subscribe(
res => {
node.children = res.map((item: any) => ({ ...item, isLeaf: index === 1 }));
},
_ => {},
() => {
resolve();
}
);
});
}
} as SFCascaderWidgetSchema
},
enterpriseAddress: {
title: '营业执照详细地址',
type: 'string',
minLength: 1,
maxLength: 240,
ui: {
grid: { xxl: 13, xl: 18, lg: 24, md: 24 },
widget: 'textarea',
autosize: { minRows: 2, maxRows: 5 },
placeholder: '请输入营业执照上的完整详细地址',
errors: {
required: '请输入营业执照上的完整详细地址'
}
} as SFTextareaWidgetSchema
},
registrationCapital: {
title: '注册资本',
type: 'number',
minimum: 1,
maximum: 99999999999999999999,
ui: {
grid: { xxl: 13, xl: 18, lg: 22, md: 22 },
placeholder: '请输入营业执照上的注册资本',
errors: {
required: '请输入营业执照上的注册资本'
},
precision: 0
}
},
staffNumber: {
title: '从业人数',
type: 'number',
minimum: 1,
maximum: 99999999999999999999,
ui: {
grid: { xxl: 13, xl: 18, lg: 22, md: 22 },
placeholder: '请输入从业人数',
errors: {
required: '请输入从业人数'
},
precision: 0
}
},
enterpriseRegistrationTime: {
title: '成立日期',
type: 'string',
ui: {
...DATECONFIG,
grid: { xxl: 13, xl: 18, lg: 24, md: 24 },
errors: {
required: '请选择开始日期'
}
} as SFDateWidgetSchema
},
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);
setTimeout(() => {
console.log(this.sf1.value);
}, 1000);
}
} as SFDateWidgetSchema
},
isLoingDate: {
title: '长期',
type: 'boolean',
ui: {
class: 'input-back',
widget: 'checkbox',
change: i => this.sf1?.setValue('/operatingEndTime', null)
} as SFCheckboxWidgetSchema
},
businessScope: {
title: '经营范围',
type: 'string',
minLength: 1,
maxLength: 500,
ui: {
grid: { xxl: 13, xl: 18, lg: 24, md: 24 },
widget: 'textarea',
autosize: { minRows: 3, maxRows: 5 },
placeholder: '请输入营业执照上的营经营范围',
errors: {
required: '请输入营业执照上的营经营范围'
}
} as SFTextareaWidgetSchema
},
taxAuthority: {
title: '税务机关',
type: 'string',
minLength: 1,
maxLength: 30,
ui: {
grid: { xxl: 13, xl: 18, lg: 24, md: 24 },
placeholder: '请输入营业执照上的税务机关',
errors: {
required: '请输入营业执照上的税务机关'
}
}
},
taxStatus: {
title: '纳税状态',
type: 'string',
minLength: 1,
maxLength: 30,
ui: {
grid: { xxl: 13, xl: 18, lg: 24, md: 24 },
placeholder: '请输入纳税状态',
errors: {
required: '请输入纳税状态'
}
}
},
legalPersonIdentityDTO: {
type: 'object',
properties: {
title2: { title: '', type: 'string', ui: { widget: 'custom' } },
tipsC: { title: '法定代表人证件照', type: 'string', ui: { widget: 'custom' } },
tipsA: { 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
},
tipsB: { 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: '请输入法定代表人证件号'
}
}
},
required: ['certificatePhotoFront', 'certificatePhotoBack', 'name', 'certificateType', 'certificateNumber',]
}
},
required: [
'licensePhotoWatermark',
'unifiedSocialCreditCode',
'enterpriseName',
'enterpriseAddressCode',
'enterpriseAddress',
'registrationCapital',
'enterpriseRegistrationTime',
'operatingStartTime',
'businessScope',
'taxStatus',
'staffNumber',
'taxAuthority'
]
};
}
private initOthersSF(): SFSchema {
return {
properties: {
title99: { title: '', type: 'string', ui: { widget: 'custom' } },
website: {
title: '平台网址',
type: 'string',
maxLength: 70,
ui: {
grid: { xxl: 13, xl: 18, lg: 24, md: 24 },
placeholder: '请输入平台网址'
}
},
costRate: {
title: '成本费率',
type: 'string',
ui: {
grid: { xxl: 13, xl: 18, lg: 24, md: 24 },
placeholder: '请输入成本费率'
}
}
},
required: ['website', 'bankAccount']
};
}
}