Files
bbq/src/app/routes/supply-management/model/import-supply/import-supply.component.ts
wangshiming 02014f4b21 fix bug
2022-03-07 14:01:53 +08:00

207 lines
6.2 KiB
TypeScript

/*
* @Description :
* @Version : 1.0
* @Author : Shiming
* @Date : 2022-03-01 15:13:03
* @LastEditors : Shiming
* @LastEditTime : 2022-03-07 13:50:55
* @FilePath : \\tms-obc-web\\src\\app\\routes\\supply-management\\model\\import-supply\\import-supply.component.ts
* Copyright (C) 2022 huzhenhong. All rights reserved.
*/
import { Component, OnInit, ViewChild } from '@angular/core';
import { STColumn } from '@delon/abc/st';
import { SFComponent, SFSchema, SFSchemaEnum, SFSelectWidgetSchema, SFUISchema } from '@delon/form';
import { _HttpClient } from '@delon/theme';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalRef } from 'ng-zorro-antd/modal';
import { NzUploadChangeParam, NzUploadFile } from 'ng-zorro-antd/upload';
import { Observable, Observer, of } from 'rxjs';
import { map } from 'rxjs/operators';
import { SupplyManagementService } from '../../services/supply-management.service';
import { apiConf } from '@conf/api.conf';
@Component({
selector: 'app-supply-management-import-supply',
templateUrl: './import-supply.component.html',
})
export class SupplyManagementImportSupplyComponent implements OnInit {
record: any = {};
files: any;
fileName: any;
status: boolean = true
files2: any;
schema: SFSchema = {};
ui: SFUISchema = {};
networkTransporter: any; // 网络货运人id
uploadUrl = apiConf.file_upload_url;
@ViewChild('sf', { static: false }) sf!: SFComponent;
constructor(
private modal: NzModalRef,
private msgSrv: NzMessageService,
public service: SupplyManagementService
) { }
ngOnInit(): void {
this.initSF();
console.log(this.record)
}
initSF() {
this.schema = {
properties: {
shipperAppUserId: {
title: '货主',
type: 'string',
maxLength: 30,
ui: {
widget: 'select',
// serverSearch: true,
searchDebounceTime: 300,
searchLoadingText: '搜索中...',
onSearch: (q: any) => {
console.log(q === ' ')
let str =q.replace(/^\s+|\s+$/g,"");
if (str) {
return this.service
.request(this.service.$api_enterpriceList, { enterpriseName: str })
.pipe(map(res => (res as any[]).map(i => ({ label: i.enterpriseName, value: i.id } as SFSchemaEnum))))
.toPromise();
} else {
return of([]);
}
},
change: (q: any) => {
let str =q.replace(/^\s+|\s+$/g,"");
if (str) {
this.getRegionCode(str);
this.getRegionCode2(str);
}
}
} as SFSelectWidgetSchema
},
enterpriseInfoId: {
type: 'string',
title: '网络货运人',
ui: {
widget: 'text',
},
default: '确认货主后带出'
},
enterpriseProjectId: {
type: 'string',
title: '项目',
ui: {
widget: 'select',
placeholder: '请选择'
} as SFSelectWidgetSchema
},
fileName: {
type: 'string',
title: '导入货源信息',
ui: {
widget: 'custom'
}
},
file: {
type: 'string',
title: '',
ui: {
widget: 'custom'
}
},
},
required: ['shipperAppUserId', 'enterpriseProjectId','enterpriseInfoId','fileName'],
};
this.ui = {
'*': {
grid: { span: 20 },
},
'$fileName': {
spanLabelFixed: 130,
grid: { span: 20 },
},
'$file': {
spanLabelFixed: 130,
grid: { span: 20 },
},
};
}
getRegionCode(regionCode: any) {
console.log(regionCode);
return this.service
.request(this.service.$api_get_enterprise_project, { id: regionCode })
.pipe(
map(res =>
res.map((item: any) => ({
label: item.projectName,
value: item.id
}))
)
)
.subscribe(res => {
this.sf.getProperty('/enterpriseProjectId')!.schema.enum = res;
this.sf.getProperty('/enterpriseProjectId')!.widget.reset(res);
});
}
getRegionCode2(regionCode: any) {
console.log(regionCode);
return this.service
.request(this.service.$api_getNetworkTransporter, { id: regionCode }).subscribe((res: any) => {
console.log(res)
this.networkTransporter = res.networkTransporter
this.sf.getProperty('/enterpriseInfoId')!.widget.reset(res?.netTranName);
this.sf.setValue('/enterpriseInfoId', res?.netTranName)
});
}
save(): void {
const formData : any= new FormData();
this.files.forEach((file: any) => {
formData.append('file', file);
formData.append('shipperAppUserId', this.sf.value?.shipperAppUserId);
formData.append('enterpriseInfoId', this?.networkTransporter);
formData.append('enterpriseProjectId', this.sf.value?.enterpriseProjectId);
});
console.log(formData)
this.service.request(this.service.$api_goodsResourceOperateImport, formData).subscribe(res => {
if (res) {
this.service.msgSrv.success('导入成功');
this.modal.destroy({ ...res });
}
});
}
close(): void {
this.modal.destroy();
}
handleChange(info: NzUploadChangeParam): void {
switch (info?.file?.status) {
case 'uploading':
break;
case 'done':
console.log(info);
let file = info?.file;
let fileName = file?.response.name;
this.sf?.setValue('/fileName', fileName);
this.sf?.setValue('/file', file?.response?.url);
break;
case 'error':
this.service.msgSrv.error('出错误了');
break;
}
}
beforeUpload = (file: NzUploadFile, _fileList: NzUploadFile[]) => {
let fileName = file?.name;
this.files = [];
this.files.push(file);
this.sf?.setValue('/fileName', fileName);
return false;
};
downFile() {
this.service.downloadFile(this.service.$api_exportGoodsResourceOperateTemplate);
}
clearFile() {
this.fileName = null;
this.sf?.setValue('/fileName', null);
}
}