Files
bbq/src/app/routes/order-management/modal/audit/voucher-view/voucher-view.component.ts
wangshiming 656639f246 fix bug
2022-04-22 15:35:14 +08:00

658 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 { Component, OnInit, ViewChild } from '@angular/core';
import { DatePipe } from '@angular/common';
import {
SFComponent,
SFCustomWidgetSchema,
SFDateWidgetSchema,
SFNumberWidgetSchema,
SFRadioWidgetSchema,
SFSchema,
SFSelectWidgetSchema,
SFTextareaWidgetSchema,
SFUISchema,
SFUploadWidgetSchema
} from '@delon/form';
import { apiConf } from '@conf/api.conf';
import { _HttpClient } from '@delon/theme';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';
import { Observable, Observer } from 'rxjs';
import { EAEnvironmentService } from '@shared';
import { OrderManagementService } from '../../../services/order-management.service';
import format from 'date-fns/format';
@Component({
selector: 'app-order-management-voucher-view',
templateUrl: './voucher-view.component.html',
styleUrls: ['./voucher-view.component.less'],
providers: [DatePipe]
})
export class orderManagementVoucherViewComponent implements OnInit {
i: any;
loadPDF: string = '';
formData: any;
datas: any;
Status: any;
data: any = {
weight: 0,
volume: 0
};
@ViewChild('sf', { static: false }) sf!: SFComponent;
schema: SFSchema = {};
ui: SFUISchema = {};
constructor(
private modal: NzModalRef,
private msgSrv: NzMessageService,
public http: _HttpClient,
public service: OrderManagementService,
private datePipe: DatePipe,
private envSrv: EAEnvironmentService,
private modalService: NzModalService
) {}
ngOnInit(): void {
console.log(this.i);
this.initData();
this.i.time = this.i.loadingTime;
this.initSF();
}
initSF() {
console.log(this.Status);
if (this.Status == 1) {
this.schema = {
properties: {
loadingLadingBillFilePath: {
type: 'string',
title: '装货凭证',
ui: {
widget: 'upload',
action: apiConf.waterFileUpload,
fileType: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '提货单',
data: {
appId: this.envSrv.env.appId,
content: [
`上传用户:${this.i?.driverName}(${this.i?.driverTelephone})`,
`上传位置:${this.i?.loadingAddressArr[0]}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`
],
position: '2',
fontSize: '100'
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card'
} as SFUploadWidgetSchema
},
loadingPeopleVehiclesGoodsFilePath: {
type: 'string',
title: '',
ui: {
widget: 'upload',
action: apiConf.waterFileUpload,
fileType: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '人车货照片',
data: {
appId: this.envSrv.env.appId,
content: [
`上传用户:${this.i?.driverName}(${this.i?.driverTelephone})`,
`上传位置:${this.i?.loadingAddressArr[0]}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`
],
position: '2',
fontSize: '100'
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card'
} as SFUploadWidgetSchema
},
no4: {
type: 'string',
title: '',
ui: {
widget: 'text'
},
default: '单张大小不超过5M支持.jpg、.jpeg和 .png格式'
},
unloadingLadingBillFilePath: {
type: 'string',
title: '卸货凭证',
ui: {
widget: 'upload',
action: apiConf.waterFileUpload,
fileType: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '提货单',
data: {
appId: this.envSrv.env.appId,
content: [
`上传用户:${this.i?.driverName}(${this.i?.driverTelephone})`,
`上传位置:${this.i?.unloadingAddressArr[0]}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`
],
position: '2',
fontSize: '100'
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card'
} as SFUploadWidgetSchema
},
unloadingPeopleVehiclesGoodsFilePath: {
type: 'string',
title: '',
ui: {
widget: 'upload',
action: apiConf.waterFileUpload,
fileType: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '人车货照片',
data: {
appId: this.envSrv.env.appId,
content: [
`上传用户:${this.i?.driverName}(${this.i?.driverTelephone})`,
`上传位置:${this.i?.unloadingAddressArr[0]}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`
],
position: '2',
fontSize: '100'
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card'
} as SFUploadWidgetSchema
}
},
required: [
'loadingLadingBillFilePath',
'loadingPeopleVehiclesGoodsFilePath',
'unloadingLadingBillFilePath',
'unloadingPeopleVehiclesGoodsFilePath'
]
};
} else {
this.schema = {
properties: {
no0: {
type: 'string',
title: '',
ui: {
widget: 'custom'
}
},
loadingLadingBillFilePath: {
type: 'string',
title: '装货凭证',
readOnly: true,
ui: {
widget: 'upload',
action: apiConf.waterFileUpload,
fileType: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '提货单',
data: {
appId: this.envSrv.env.appId,
content: [
`上传用户:${this.i?.driverName}(${this.i?.driverTelephone})`,
`上传位置:${this.i?.loadingAddressArr[0]}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`
],
position: '2',
fontSize: '100'
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card'
} as SFUploadWidgetSchema
},
loadingPeopleVehiclesGoodsFilePath: {
type: 'string',
title: '',
readOnly: true,
ui: {
widget: 'upload',
action: apiConf.waterFileUpload,
fileType: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '人车货照片',
data: {
appId: this.envSrv.env.appId,
content: [
`上传用户:${this.i?.driverName}(${this.i?.driverTelephone})`,
`上传位置:${this.i?.loadingAddressArr[0]}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`
],
position: '2',
fontSize: '100'
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card'
} as SFUploadWidgetSchema
},
no4: {
type: 'string',
title: '',
ui: {
widget: 'text'
},
default: '单张大小不超过5M支持.jpg、.jpeg和 .png格式'
},
no6: {
type: 'string',
title: '',
ui: {
widget: 'custom'
}
},
unloadingLadingBillFilePath: {
type: 'string',
title: '卸货凭证',
readOnly: true,
ui: {
widget: 'upload',
action: apiConf.waterFileUpload,
fileType: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '提货单',
data: {
appId: this.envSrv.env.appId,
content: [
`上传用户:${this.i?.driverName}(${this.i?.driverTelephone})`,
`上传位置:${this.i?.unloadingAddressArr[0]}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`
],
position: '2',
fontSize: '100'
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card'
} as SFUploadWidgetSchema
},
unloadingPeopleVehiclesGoodsFilePath: {
type: 'string',
title: '',
readOnly: true,
ui: {
widget: 'upload',
action: apiConf.waterFileUpload,
fileType: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '人车货照片',
data: {
appId: this.envSrv.env.appId,
content: [
`上传用户:${this.i?.driverName}(${this.i?.driverTelephone})`,
`上传位置:${this.i?.unloadingAddressArr[0]}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`
],
position: '2',
fontSize: '100'
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card'
} as SFUploadWidgetSchema
}
},
required: [
'loadingLadingBillFilePath',
'loadingPeopleVehiclesGoodsFilePath',
'unloadingLadingBillFilePath',
'unloadingPeopleVehiclesGoodsFilePath'
]
};
}
this.ui = {
'*': {
spanLabelFixed: 100,
grid: { span: 20 }
},
$unloadingLadingBillFilePath: { grid: { span: 12 } },
$unloadingPeopleVehiclesGoodsFilePath: { grid: { span: 12 } },
$loadingLadingBillFilePath: { grid: { span: 12 } },
$loadingPeopleVehiclesGoodsFilePath: { grid: { span: 12 } }
};
}
save(value: any): void {
if (!this.sf.valid) {
this.service.msgSrv.warning('必填项为空!');
return;
}
console.log(value);
const params = {
id: this.i?.id,
loadingLadingBillFilePath: value?.loadingLadingBillFilePath?.data?.fullFilePath,
loadingPeopleVehiclesGoodsFilePath: value?.loadingPeopleVehiclesGoodsFilePath?.data?.fullFilePath,
unloadingLadingBillFilePath: value?.unloadingLadingBillFilePath?.data?.fullFilePath,
unloadingPeopleVehiclesGoodsFilePath: value?.unloadingPeopleVehiclesGoodsFilePath?.data?.fullFilePath
};
console.log(params);
this.service.request(this.service.$api_get_updateBillExamine, params).subscribe(res => {
if (res) {
this.service.msgSrv.success('修改成功!');
this.modal.destroy(true);
}
});
}
sure() {
// const params = [this.i?.id];
// this.service.downloadFile(this.service.$api_createBillTakeGoods, params);
// this.service.downloadFile(this.service.$api_createBillDischargeGoods, params);
// 逻辑: 先判断电子提货单是否已生成,文件为空则触发签署文件,再查询是否签署成功,成功则退出,刷新页面,再次点击为预览
let time = 10;
setInterval(function () {
time -= 1;
}, 1000);
const modal = this.modalService.success({
nzTitle: '电子装货单和电子卸货单签署中!',
nzContent: `
请等待${time}秒后自动关闭
`
});
this.service.request(this.service.$api_createBillTakeGoods, [this.datas?.id]).subscribe(res => {
if (res) {
switch (res[0]?.esignFlowStatus) {
case 1:
case '1':
setTimeout(() => {
this.service.request(this.service.$api_getBillTakeEsignFile, [this.datas?.id]).subscribe(res => {
if (res[0]?.esignFlowStatus == '2') {
}
});
}, 9000);
return;
case 2:
return;
case '13':
default:
this.service.msgSrv.error('电子装货单签署异常!');
modal.destroy();
return;
}
} else {
this.service.msgSrv.error('电子装货单签署异常!');
modal.destroy();
}
});
this.service.request(this.service.$api_createBillDischargeGoods, [this.datas?.id]).subscribe(res => {
if (res) {
switch (res[0]?.esignFlowStatus) {
case 1:
case '1':
setTimeout(() => {
this.service.request(this.service.$api_getBillDischargeEsignFile, [this.datas?.id]).subscribe(res => {
if (res[0]?.esignFlowStatus == '2') {
this.service.msgSrv.success('生成电子单据成功!');
this.modal.destroy(true);
}
});
modal.destroy();
}, 9000);
return;
case 2:
modal.destroy();
return;
default:
this.service.msgSrv.error('电子卸货单签署异常!');
modal.destroy();
return;
}
} else {
this.service.msgSrv.error('电子卸货单签署异常!');
modal.destroy();
}
});
}
// 确认到车界面信息(两个只能看的图片)
initData() {
this.service.request(this.service.$api_get_getCredentials, { id: this.i?.id }).subscribe(res => {
console.log(res);
this.datas = res;
if (res.unloadingLadingBillFilePath) {
this.formData = {
loadingLadingBillFilePath: [
{
uid: 'logo',
name: 'LOGO',
status: 'done',
url: res.loadingLadingBillFilePath,
response: {
url: res.loadingLadingBillFilePath
}
}
],
loadingPeopleVehiclesGoodsFilePath: [
{
uid: 'logo',
name: 'LOGO',
status: 'done',
url: res.loadingPeopleVehiclesGoodsFilePath,
response: {
url: res.loadingPeopleVehiclesGoodsFilePath
}
}
],
unloadingLadingBillFilePath: [
{
uid: 'logo',
name: 'LOGO',
status: 'done',
url: res.unloadingLadingBillFilePath,
response: {
url: res.unloadingLadingBillFilePath
}
}
],
unloadingPeopleVehiclesGoodsFilePath: [
{
uid: 'logo',
name: 'LOGO',
status: 'done',
url: res.unloadingPeopleVehiclesGoodsFilePath,
response: {
url: res.unloadingPeopleVehiclesGoodsFilePath
}
}
]
};
}
});
}
close(): void {
this.modal.destroy(true);
}
openlaod(value: any) {
if (value === 1) {
this.service.request(this.service.$api_getBillTakeGoods, {id:this.datas?.id}).subscribe(res => {
if (res) {
console.log(res);
window.open(res?.contractFilePath)
}
});
} else {
this.service.request(this.service.$api_getBillDischargeGoods, {id:this.datas?.id}).subscribe(res => {
if (res) {
console.log(res);
window.open(res?.contractFilePath)
}
});
}
}
}