Files
bbq/src/app/routes/sys-setting/components/network-freight/new/new.component.ts
wangshiming 2aeaa09e14 fix bug
2022-04-28 20:26:30 +08:00

730 lines
24 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 { query } from '@angular/animations';
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,
SFStringWidgetSchema,
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;
sf1FormData: any = {
legalPersonIdentityVO: {
certificatePhotoFrontWatermark: '',
certificatePhotoBackWatermark: '',
roadTransportPhotoWatermark: ''
}
};
subText = '确认新增';
TabText = '新增网络货运人';
sf2FormData: any = {};
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, private route: ActivatedRoute) {}
ngOnInit() {
if (this.route.snapshot.params.id !== 'undefined') {
this.dataListInit(this.route.snapshot.params.id);
this.subText = '确认编辑';
this.TabText = '编辑网络货运人';
}
}
dataListInit(id: any) {
this.service.request(this.service.$api_get_networkTransporter_getDetail, { id: id }).subscribe(res => {
console.log(res);
this.sf2FormData = res;
this.sf1FormData = res.enterpriseInfoVO;
this.sf1FormData.isLoingDate = this.sf1FormData.operatingEndTime !== null ? false : true;
this.sf1FormData.licensePhotoWatermark = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: this.sf1FormData.licensePhotoWatermark,
response: this.sf1FormData.licensePhotoWatermark
}
];
console.log(this.sf1FormData);
// 营业执照法人信息
this.sf1FormData.legalPersonIdentityVO.certificatePhotoFrontWatermark = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: res.enterpriseInfoVO.legalPersonIdentityVO.certificatePhotoFrontWatermark,
response: res.enterpriseInfoVO.legalPersonIdentityVO.certificatePhotoFrontWatermark
}
];
this.sf1FormData.legalPersonIdentityVO.certificatePhotoBackWatermark = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: this.sf1FormData.legalPersonIdentityVO.certificatePhotoBackWatermark,
response: this.sf1FormData.legalPersonIdentityVO.certificatePhotoBackWatermark
}
];
this.sf1FormData.legalPersonIdentityVO.roadTransportPhotoWatermark = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: this.sf1FormData.legalPersonIdentityVO.roadTransportPhotoWatermark,
response: this.sf1FormData.legalPersonIdentityVO.roadTransportPhotoWatermark
}
];
const province = this.sf1FormData.fullRegionVO.provinceCode;
const city = this.sf1FormData.fullRegionVO.cityCode;
const area = this.sf1FormData.fullRegionVO.areaCode;
this.sf1FormData.enterpriseAddressCode = [parseInt(province), parseInt(city), parseInt(area)];
this.getRegionToThree();
});
}
getRegionToThree() {
// 获取一、二、三级地区详情
this.service.http.post(this.service.$api_getRegionToThree).subscribe(res => {
if (this.sf1) {
this.sf1.getProperty('/enterpriseAddressCode')!.schema.enum = res.data;
this.sf1?.getProperty('/enterpriseAddressCode')?.widget.reset(res.data);
}
});
}
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;
}
}
if (this.sf1.value.isLoingDate) {
this.sf1.value.operatingEndTime = '';
}
console.log(this.sf1.value);
console.log(this.sf1.valid);
console.log(this.sf?.value);
console.log(this.sf.valid);
const sfVlaue = this.sf1.value;
const params: any = {};
console.log(this.sf1.value);
Object.assign(params, {
...this.sf?.value,
enterpriseInfoDTO: {
...this.sf1.value,
legalPersonIdentityDTO: this.sf1.value.legalPersonIdentityVO,
},
roadTransportAddress: this.sf1.value.legalPersonIdentityVO.roadTransportAddress, //道路运输证地址
roadTransportEndTime: this.sf1.value.legalPersonIdentityVO.roadTransportEndTime, //道路运输许可证有效结束时间
roadTransportStartTime: this.sf1.value.legalPersonIdentityVO.roadTransportStartTime, //道路运输许可证有效开始时间
roadTransportPhotoWatermark: this.sf1.value.legalPersonIdentityVO.roadTransportPhotoWatermark, //带水印道路运输照片
roadTransportPhoto: this.sf1.value.legalPersonIdentityVO.roadTransportPhoto, //经营许可证号
roadTransportLicenceNo: this.sf1.value.legalPersonIdentityVO.roadTransportLicenceNo, //道路运输照片
});
delete params.enterpriseInfoDTO.legalPersonIdentityVO;
console.log(params);
params.enterpriseInfoDTO.enterpriseAddressCode = this.sf1.value?.enterpriseAddressCode?.[2];
if (this.route.snapshot.params.id !== 'undefined') {
params.id = this.route.snapshot.params.id;
}
this.service.request(this.service.$api_networkTransporter_save, params).subscribe(res => {
if (res) {
if (this.route.snapshot.params.id !== 'undefined') {
this.service.msgSrv.success('修改成功');
} else {
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('/legalPersonIdentityVO/name', res.name);
}
if (res.number) {
this.sf1.setValue('/legalPersonIdentityVO/certificateType', 0);
this.sf1.setValue('/legalPersonIdentityVO/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) {
console.log('触发了识别');
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 } },
tipsS: { title: '', type: 'string', ui: { widget: 'custom', offsetControl: 6 } },
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: '请输入纳税状态'
}
}
},
legalPersonIdentityVO: {
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('/legalPersonIdentityVO/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('/legalPersonIdentityVO/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: '请输入法定代表人证件号'
}
},
title3: { title: '', type: 'string', ui: { widget: 'custom', offsetControl: 6 } },
roadTransportPhoto: { title: '', type: 'string', ui: { hidden: true } },
tipsY: { title: '', type: 'string', ui: { widget: 'custom', offsetControl: 6 } },
roadTransportPhotoWatermark: {
type: 'string',
title: '道运证照片',
ui: {
...IMAGECONFIG,
change: args => {
if (args.type === 'success') {
console.log(args);
this.sf1.setValue('/legalPersonIdentityVO/roadTransportPhoto', args.fileList[0].response.data.fullFilePath);
this.checkTransCard(args.fileList[0].response.data.fullFilePath);
}
}
} as SFUploadWidgetSchema
},
roadTransportLicenceNo: {
title: '经营许可证号',
type: 'string',
maxLength: 30,
ui: {
grid: { xxl: 13, xl: 18, lg: 24, md: 24 },
placeholder: '请输入'
}
},
roadTransportAddress: {
title: '地址',
type: 'string',
maxLength: 30,
ui: {
grid: { xxl: 13, xl: 18, lg: 24, md: 24 },
placeholder: '请输入'
}
},
roadTransportStartTime: {
title: '发证日期',
type: 'string',
format: 'date',
ui: {
grid: { xxl: 13, xl: 18, lg: 24, md: 24 },
placeholder: '请输入'
}
},
roadTransportEndTime: {
title: '有效期至',
type: 'string',
format: 'date',
ui: {
grid: { xxl: 13, xl: 18, lg: 24, md: 24 },
placeholder: '请输入'
}
}
},
required: [
'certificatePhotoFront',
'certificatePhotoBack',
'name',
'certificateType',
'certificateNumber',
'certificatePhotoFrontWatermark',
'certificatePhotoBackWatermark',
'roadTransportEndTime',
'roadTransportStartTime',
'roadTransportLicenceNo',
'roadTransportPhotoWatermark',
'roadTransportAddress',
]
}
},
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',
addOnAfter: '%',
ui: {
addOnAfter: '%',
grid: { xxl: 13, xl: 18, lg: 24, md: 24 },
placeholder: '请输入成本费率'
}
}
},
required: ['website', 'costRate']
};
}
// 道路运输证识别
checkTransCard(imgurl: any) {
const params = {
transportationLicenseUrl: imgurl
};
this.service.request(this.service.$api_recognizeTransportationLicense, params).subscribe(res => {
if (res) {
this.sf.setValue('/roadTransportLicenceNo', res?.businessCertificate);
this.sf.setValue('/roadTransportStartTime', res?.issueDate);
}
});
}
}