This commit is contained in:
wangshiming
2022-03-02 20:57:40 +08:00
parent 8e8dac953c
commit 2e5164fe3c
3 changed files with 76 additions and 62 deletions

View File

@ -4,42 +4,47 @@
* @Author : Shiming
* @Date : 2021-12-03 11:10:14
* @LastEditors : Shiming
* @LastEditTime : 2022-03-02 09:46:36
* @LastEditTime : 2022-03-02 20:29:46
* @FilePath : \\tms-obc-web\\src\\app\\routes\\supply-management\\model\\import-supply\\import-supply.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
<div *ngIf="status">
<sf #sf mode="edit" [schema]="schema" [ui]="ui" button="none">
<ng-template sf-template="resourceCode2" let-me let-ui="ui" let-schema="schema">
<input readonly nz-input placeholder="请选择上传文件" [(ngModel)]="files2" />
<nz-upload
[nzAction]="service.$api_upload_url"
[nzName]="'multipartFile'"
[nzHeaders]="{ authorization: 'authorization-text' }"
<ng-template sf-template="fileName" let-me let-ui="ui" let-schema="schema">
<nz-input-group [nzSuffix]="inputClearTpl">
<input type="text" readonly nz-input [(ngModel)]="me.formProperty.value" placeholder="请上传文件" />
</nz-input-group>
<ng-template #inputClearTpl>
<i nz-icon class="ant-input-clear-icon" nzTheme="fill" nzType="close-circle" *ngIf="me.formProperty.value"
(click)="clearFile()"></i>
</ng-template>
</ng-template>
<ng-template sf-template="file" let-me let-ui="ui" let-schema="schema">
<nz-upload [nzAction]="uploadUrl" [nzName]="'multipartFile'" [nzHeaders]="{ authorization: 'authorization-text' }"
[(nzFileList)]="files"
(nzChange)="handleChange($event)"
[nzShowUploadList]="false"
[nzBeforeUpload]="beforeUpload"
>
[nzAccept]="'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel'"
(nzChange)="handleChange($event)" [nzShowUploadList]="false" [nzBeforeUpload]="beforeUpload" [nzLimit]="1">
<div>
<button nz-button style="color: #ff4d4f; margin-top: 5px">
<button nzType="primary" nz-button>
<i nz-icon nzType="upload"></i>
上传文件
</button>
</div>
</nz-upload>
<span style="color: #ff4d4f; font-size: 12px;margin-left: 10px; cursor: pointer;" (click)="downFile()">下载导入模板</span>
<div style="color: #ff4d4f; font-size: 12px; margin-top: 5px; width: 400px">仅支持XLX / XLSX文件格式最多不能超过100行数据</div>
<span style="color: #ff4d4f; font-size: 12px;margin-left: 10px; cursor: pointer;"
(click)="downFile()">下载导入模板</span>
<div style="color: #ff4d4f; font-size: 12px; margin-top: 5px; width: 400px">仅支持XLS / XLSX文件格式最多不能超过100行数据</div>
</ng-template>
</sf>
<sv-container col="1" >
<sv style="height: 20px;">注意:</sv>
<sv style="height: 20px;">1、第一次上传请点击下载模板</sv>
<sv style="height: 20px;">2、请不要调整模板顺序</sv>
<sv style="height: 20px;">3、必填字段请务必填写</sv>
<sv style="height: 20px;">4、如果不清楚字段值请参考货源发布功能</sv>
<sv style="height: 20px;">5、发布成功后可在货源列表-待接单查看</sv>
</sv-container>
<div>
<p class="mb-xs">注意:</p>
<p class="mb-xs">1、第一次上传请点击下载模板</p>
<p class="mb-xs">2、请不要调整模板顺序</p>
<p class="mb-xs">3、必填字段请务必填写</p>
<p class="mb-xs">4、如果不清楚字段值请参考货源发布功能</p>
<p class="mb-xs">5、发布成功后可在货源列表-待接单查看</p>
<div>
</div>
<div *ngIf="!status">
文件上传成功成功xx条失败xx条

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2022-03-01 15:13:03
* @LastEditors : Shiming
* @LastEditTime : 2022-03-02 10:32:15
* @LastEditTime : 2022-03-02 20:57:36
* @FilePath : \\tms-obc-web\\src\\app\\routes\\supply-management\\model\\import-supply\\import-supply.component.ts
* Copyright (C) 2022 huzhenhong. All rights reserved.
*/
@ -18,6 +18,7 @@ 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',
@ -30,6 +31,8 @@ export class SupplyManagementImportSupplyComponent implements OnInit {
files2: any;
schema: SFSchema = {};
ui: SFUISchema = {};
fileName: any;
uploadUrl = apiConf.file_upload_url;
@ViewChild('sf', { static: false }) sf!: SFComponent;
constructor(
private modal: NzModalRef,
@ -70,17 +73,18 @@ export class SupplyManagementImportSupplyComponent implements OnInit {
let str =q.replace(/^\s+|\s+$/g,"");
if (str) {
this.getRegionCode(str);
this.getRegionCode2(str);
}
}
} as SFSelectWidgetSchema
},
resourceCode: {
netTranName: {
type: 'string',
title: '网络货运人',
ui: {
widget: 'select',
placeholder: '请选择'
} as SFSelectWidgetSchema
widget: 'text',
},
default: '确认货主后带出'
},
enterpriseProjectId: {
type: 'string',
@ -90,21 +94,29 @@ export class SupplyManagementImportSupplyComponent implements OnInit {
placeholder: '请选择'
} as SFSelectWidgetSchema
},
resourceCode2: {
fileName: {
type: 'string',
title: '导入货源信息',
ui: {
widget: 'custom'
}
},
file: {
type: 'string',
title: '',
ui: {
widget: 'custom'
}
},
},
required: ['shipperAppUserId', 'enterpriseProjectId','resourceCode2',],
required: ['shipperAppUserId', 'enterpriseProjectId','netTranName','fileName'],
};
this.ui = {
'*': {
spanLabelFixed: 130,
grid: { span: 20 },
},
'$resourceCode2': {
'$fileName': {
spanLabelFixed: 130,
grid: { span: 20 },
},
@ -134,22 +146,15 @@ export class SupplyManagementImportSupplyComponent implements OnInit {
getRegionCode2(regionCode: any) {
console.log(regionCode);
return this.service
.request(this.service.$api_getNetworkTransporter, { 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);
.request(this.service.$api_getNetworkTransporter, { id: regionCode }).subscribe((res: any) => {
console.log(res?.netTranName)
console.log(res?.networkTransporter)
this.sf.getProperty('/netTranName')!.widget.reset(res?.netTranName);
this.sf.setValue('/netTranName', res?.netTranName)
});
}
save(): void {
console.log(this.files)
console.log(this.sf.value)
// this.service.request(this.service.$api_update_price, { id, freightType, freightPrice, resourceCode, rule, resourceId }).subscribe(res => {
// if (res) {
// this.msgSrv.success('保存成功');
@ -162,33 +167,28 @@ export class SupplyManagementImportSupplyComponent implements OnInit {
this.modal.destroy();
}
handleChange(info: NzUploadChangeParam): void {
switch (info.file.status) {
switch (info?.file?.status) {
case 'uploading':
break;
case 'done':
let fileList = [...info.fileList];
// 2. Read from response and show file link
fileList = fileList.map((file: any) => {
if (file.response) {
file.url = file.response.data.fullFilePath;
}
return file;
});
this.files2 = fileList[0].name
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('网络错误');
this.service.msgSrv.error('错误');
break;
}
}
beforeUpload = (file: NzUploadFile, _fileList: NzUploadFile[]) => {
return new Observable((observer: Observer<boolean>) => {
const isJpgOrPng = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
if (!isJpgOrPng) {
this.service.msgSrv.error('仅支持XLX / XLSX文件格式');
observer.complete();
return;
}
// const isJpgOrPng = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
// if (!isJpgOrPng) {
// this.service.msgSrv.error('仅支持XLX / XLSX文件格式');
// observer.complete();
// return;
// }
// tslint:disable-next-line: no-non-null-assertion
const isLt2M = file.size! / 1024 / 1024 < 3;
if (!isLt2M) {
@ -196,10 +196,15 @@ export class SupplyManagementImportSupplyComponent implements OnInit {
observer.complete();
return;
}
observer.next(isJpgOrPng && isLt2M);
observer.next(isLt2M);
observer.complete();
});
};
clearFile() {
this.fileName = null;
this.sf?.setValue('/fileName', null);
this.sf?.setValue('/file', null);
}
downFile() {
this.service.downloadFile(this.service.$api_exportGoodsResourceOperateTemplate);
}

View File

@ -9,5 +9,9 @@ export const apiConf = {
/**
* 文件上传路径(水印)
*/
waterFileUpload: `/api/mdc/pbc/upload/multipartFile/watermarkFile`
waterFileUpload: `/api/mdc/pbc/upload/multipartFile/watermarkFile`,
/**
* 上传文件返回fileModel
*/
file_upload_url: '/api/mdc/pbc/upload/multipartFile/fileModel'
};