@kre-form/ant
Version:
201 lines (200 loc) • 16.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component } from "@angular/core";
import { FieldType } from "@kre-form/core";
import { NzMessageService } from "ng-zorro-antd/message";
import { Observable } from "rxjs";
export class KreFormFieldUpload extends FieldType {
/**
* @param {?} msg
*/
constructor(msg) {
super();
this.msg = msg;
this.defaultFileList = [];
this.handleRemove = (/**
* @param {?} file
* @return {?}
*/
(file) => new Observable((/**
* @param {?} observer
* @return {?}
*/
(observer) => {
observer.next(true);
observer.complete();
})));
this.beforeUpload = (/**
* @param {?} file
* @return {?}
*/
(file) => {
return new Observable((/**
* @param {?} observer
* @return {?}
*/
(observer) => {
/** @type {?} */
const isJPG = file.type === "image/jpeg";
if (!this.checkFileType(file)) {
this.msg.error("您上传的文件类型不符合要求!");
observer.complete();
return;
}
if (!this.checkFileSize(file)) {
this.msg.error("您上传的文件大小已经超出最大设置");
observer.complete();
return;
}
observer.next(true);
observer.complete();
}));
});
}
/**
* @param {?} __0
* @return {?}
*/
handleChange({ file, fileList }) {
/** @type {?} */
const status = file.status;
if (status !== "uploading") {
}
if (status === "done") {
/** @type {?} */
let values = fileList.map((/**
* @param {?} item
* @return {?}
*/
(item) => {
return {
uid: item.uid,
name: item.name,
url: item.url,
};
}));
/* this.model[this.field.key] = values;
this.formControl.markAsTouched(); */
this.formControl.patchValue(values);
this.formControl.markAsTouched();
this.msg.success(`文件${file.name} 上传成功!`);
}
else if (status === "error") {
this.msg.error(`文件${file.name} 上传失败!`);
}
if (status === "removed") {
/** @type {?} */
let values = this.formControl.value;
values.forEach((/**
* @param {?} item
* @param {?} index
* @param {?} object
* @return {?}
*/
(item, index, object) => {
if (item.uid === file.uid) {
object.splice(index, 1);
}
}));
//this.formControl.patchValue(values);
//this.formControl.markAsTouched();
this.msg.success(`文件${file.name} 删除成功!`);
}
}
/**
* @param {?} file
* @return {?}
*/
checkFileType(file) {
/** @type {?} */
let result = true;
if (this.field &&
this.field.templateOptions &&
this.field.templateOptions.attachment &&
this.field.templateOptions.attachment.type) {
/** @type {?} */
let types = this.field.templateOptions.attachment.type;
if (types != undefined && types != null && types != "") {
result = types.split(",").some((/**
* @param {?} item
* @return {?}
*/
(item) => {
return file.type === item;
}));
}
}
return result;
}
/**
* @param {?} file
* @return {?}
*/
checkFileSize(file) {
/** @type {?} */
let result = true;
if (this.field &&
this.field.templateOptions &&
this.field.templateOptions.attachment &&
this.field.templateOptions.attachment.size) {
/** @type {?} */
let size = this.field.templateOptions.attachment.size;
if (size != undefined && size != null) {
result = file.size / 1024 / 1024 <= size;
}
}
return result;
}
}
KreFormFieldUpload.decorators = [
{ type: Component, args: [{
selector: "krefield-upload",
template: `
<ng-container *ngIf="formStatus !== 0; else other">
<div class="control-design">
<nz-upload nzType="drag" [nzDisabled]="true">
<p class="ant-upload-drag-icon"></p>
<p class="ant-upload-text">单击或拖动文件到此区域上传</p>
<p class="ant-upload-hint">
支持单个或批量上传。严禁上传不法文件,谢谢!
</p>
</nz-upload>
</div>
</ng-container>
<ng-template #other>
<nz-upload
nzType="drag"
nzAction="https://jsonplaceholder.typicode.com/posts/"
[nzFileList]="defaultFileList"
[nzMultiple]="true"
(nzChange)="handleChange($event)"
[class.is-invalid]="showError"
>
<p class="ant-upload-drag-icon"></p>
<p class="ant-upload-text">单击或拖动文件到此区域上传</p>
<p class="ant-upload-hint">
支持单个或批量上传。严禁上传不法文件,谢谢!
</p>
</nz-upload>
<div class="tips"></div>
</ng-template>
`
}] }
];
/** @nocollapse */
KreFormFieldUpload.ctorParameters = () => [
{ type: NzMessageService }
];
if (false) {
/** @type {?} */
KreFormFieldUpload.prototype.defaultFileList;
/** @type {?} */
KreFormFieldUpload.prototype.handleRemove;
/** @type {?} */
KreFormFieldUpload.prototype.beforeUpload;
/** @type {?} */
KreFormFieldUpload.prototype.msg;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGtyZS1mb3JtL2FudC8iLCJzb3VyY2VzIjpbImxpYi90eXBlcy91cGxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXpELE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxNQUFNLENBQUM7QUFzQzVDLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxTQUFTOzs7O0lBRS9DLFlBQW1CLEdBQXFCO1FBQ3RDLEtBQUssRUFBRSxDQUFDO1FBRFMsUUFBRyxHQUFILEdBQUcsQ0FBa0I7UUFEeEMsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUF1Q3JCLGlCQUFZOzs7O1FBQUcsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUMzQixJQUFJLFVBQVU7Ozs7UUFBVSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ25DLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEIsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLENBQUMsRUFBQyxFQUFDO1FBRUwsaUJBQVk7Ozs7UUFBRyxDQUFDLElBQVUsRUFBRSxFQUFFO1lBQzVCLE9BQU8sSUFBSSxVQUFVOzs7O1lBQUMsQ0FBQyxRQUEyQixFQUFFLEVBQUU7O3NCQUM5QyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZO2dCQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztvQkFDakMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNwQixPQUFPO2lCQUNSO2dCQUNELElB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QUM7Ozs7O0lBRUQsYUFBYSxDQUFDLElBQVU7O1lBQ2xCLE1BQU0sR0FBWSxJQUFJO1FBQzFCLElBQ0UsSUFBSSxDQUFDLEtBQUs7WUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWU7WUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsVUFBVTtZQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUMxQzs7Z0JBQ0ksSUFBSSxHQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJO1lBQzFELElBQUksSUFBSSxJQUFJLFNBQVMsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO2dCQUNyQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQzthQUMxQztTQUNGO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7O1lBbElGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCVDthQUNGOzs7O1lBdkNRLGdCQUFnQjs7OztJQXlDdkIsNkNBQXFCOztJQXVDckIsMENBSUs7O0lBRUwsMENBZ0JFOztJQTVEVSxpQ0FBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSBcIkBrcmUtZm9ybS9jb3JlXCI7XG5pbXBvcnQgeyBOek1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcIm5nLXpvcnJvLWFudGQvbWVzc2FnZVwiO1xuaW1wb3J0IHsgVXBsb2FkQ2hhbmdlUGFyYW0sIFVwbG9hZEZpbGUgfSBmcm9tIFwibmctem9ycm8tYW50ZC91cGxvYWRcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIE9ic2VydmVyIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IEtyZUZvcm1BbnRTZXJ2aWNlIH0gZnJvbSBcIi4uL3Rvb2xzL3NlcnZpY2VcIjtcbmltcG9ydCAqIGFzIF8gZnJvbSBcImxvZGFzaFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwia3JlZmllbGQtdXBsb2FkXCIsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1TdGF0dXMgIT09IDA7IGVsc2Ugb3RoZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sLWRlc2lnblwiPlxuICAgICAgICA8bnotdXBsb2FkIG56VHlwZT1cImRyYWdcIiBbbnpEaXNhYmxlZF09XCJ0cnVlXCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJhbnQtdXBsb2FkLWRyYWctaWNvblwiPjwvcD5cbiAgICAgICAgICA8cCBjbGFzcz1cImFudC11cGxvYWQtdGV4dFwiPuWNleWHu+aIluaLluWKqOaWh+S7tuWIsOatpOWMuuWfn+S4iuS8oDwvcD5cbiAgICAgICAgICA8cCBjbGFzcz1cImFudC11cGxvYWQtaGludFwiPlxuICAgICAgICAgICAg5pSv5oyB5Y2V5Liq5oiW5om56YeP5LiK5Lyg44CC5Lil56aB5LiK5Lyg5LiN5rOV5paH5Lu277yM6LCi6LCiIVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9uei11cGxvYWQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjb3RoZXI+XG4gICAgICA8bnotdXBsb2FkXG4gICAgICAgIG56VHlwZT1cImRyYWdcIlxuICAgICAgICBuekFjdGlvbj1cImh0dHBzOi8vanNvbnBsYWNlaG9sZGVyLnR5cGljb2RlLmNvbS9wb3N0cy9cIlxuICAgICAgICBbbnpGaWxlTGlzdF09XCJkZWZhdWx0RmlsZUxpc3RcIlxuICAgICAgICBbbnpNdWx0aXBsZV09XCJ0cnVlXCJcbiAgICAgICAgKG56Q2hhbmdlKT1cImhhbmRsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwic2hvd0Vycm9yXCJcbiAgICAgID5cbiAgICAgICAgPHAgY2xhc3M9XCJhbnQtdXBsb2FkLWRyYWctaWNvblwiPjwvcD5cbiAgICAgICAgPHAgY2xhc3M9XCJhbnQtdXBsb2FkLXRleHRcIj7ljZXlh7vmiJbmi5bliqjmlofku7bliLDmraTljLrln5/kuIrkvKA8L3A+XG4gICAgICAgIDxwIGNsYXNzPVwiYW50LXVwbG9hZC1oaW50XCI+XG4gICAgICAgICAg5pSv5oyB5Y2V5Liq5oiW5om56YeP5LiK5Lyg44CC5Lil56aB5LiK5Lyg5LiN5rOV5paH5Lu277yM6LCi6LCiIVxuICAgICAgICA8L3A+XG4gICAgICA8L256LXVwbG9hZD5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aXBzXCI+PC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgS3JlRm9ybUZpZWxkVXBsb2FkIGV4dGVuZHMgRmllbGRUeXBlIHtcbiAgZGVmYXVsdEZpbGVMaXN0ID0gW107XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtc2c6IE56TWVzc2FnZVNlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgaGFuZGxlQ2hhbmdlKHsgZmlsZSwgZmlsZUxpc3QgfTogVXBsb2FkQ2hhbmdlUGFyYW0pOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0dXMgPSBmaWxlLnN0YXR1cztcbiAgICBpZiAoc3RhdHVzICE9PSBcInVwbG9hZGluZ1wiKSB7XG4gICAgfVxuICAgIGlmIChzdGF0dXMgPT09IFwiZG9uZVwiKSB7XG4gICAgICBsZXQgdmFsdWVzOiBhbnkgPSBmaWxlTGlzdC5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHVpZDogaXRlbS51aWQsXG4gICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxuICAgICAgICAgIHVybDogaXRlbS51cmwsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIC8qIHRoaXMubW9kZWxbdGhpcy5maWVsZC5rZXldID0gdmFsdWVzO1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7ICovXG4gICAgICB0aGlzLmZvcm1Db250cm9sLnBhdGNoVmFsdWUodmFsdWVzKTtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgdGhpcy5tc2cuc3VjY2Vzcyhg5paH5Lu2JHtmaWxlLm5hbWV9IOS4iuS8oOaIkOWKn++8gWApO1xuICAgIH0gZWxzZSBpZiAoc3RhdHVzID09PSBcImVycm9yXCIpIHtcbiAgICAgIHRoaXMubXNnLmVycm9yKGDmlofku7Yke2ZpbGUubmFtZX0g5LiK5Lyg5aSx6LSl77yBYCk7XG4gICAgfVxuICAgIGlmIChzdGF0dXMgPT09IFwicmVtb3ZlZFwiKSB7XG4gICAgICBsZXQgdmFsdWVzOiBhbnkgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlO1xuICAgICAgdmFsdWVzLmZvckVhY2goKGl0ZW06IGFueSwgaW5kZXg6IGFueSwgb2JqZWN0OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGl0ZW0udWlkID09PSBmaWxlLnVpZCkge1xuICAgICAgICAgIG9iamVjdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy90aGlzLmZvcm1Db250cm9sLnBhdGNoVmFsdWUodmFsdWVzKTtcbiAgICAgIC8vdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICB0aGlzLm1zZy5zdWNjZXNzKGDmlofku7Yke2ZpbGUubmFtZX0g5Yig6Zmk5oiQ5Yqf77yBYCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlUmVtb3ZlID0gKGZpbGU6IGFueSkgPT5cbiAgICBuZXcgT2JzZXJ2YWJsZTxib29sZWFuPigob2JzZXJ2ZXIpID0+IHtcbiAgICAgIG9ic2VydmVyLm5leHQodHJ1ZSk7XG4gICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgIH0pO1xuXG4gIGJlZm9yZVVwbG9hZCA9IChmaWxlOiBGaWxlKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcjogT2JzZXJ2ZXI8Ym9vbGVhbj4pID0+IHtcbiAgICAgIGNvbnN0IGlzSlBHID0gZmlsZS50eXBlID09PSBcImltYWdlL2pwZWdcIjtcbiAgICAgIGlmICghdGhpcy5jaGVja0ZpbGVUeXBlKGZpbGUpKSB7XG4gICAgICAgIHRoaXMubXNnLmVycm9yKFwi5oKo5LiK5Lyg55qE5paH5Lu257G75Z6L5LiN56ym5ZCI6KaB5rGC77yBXCIpO1xuICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuY2hlY2tGaWxlU2l6ZShmaWxlKSkge1xuICAgICAgICB0aGlzLm1zZy5lcnJvcihcIuaCqOS4iuS8oOeahOaWh+S7tuWkp+Wwj+W3sue7j+i2heWHuuacgOWkp+iuvue9rlwiKTtcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgb2JzZXJ2ZXIubmV4dCh0cnVlKTtcbiAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY2hlY2tGaWxlVHlwZShmaWxlOiBGaWxlKSB7XG4gICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IHRydWU7XG4gICAgaWYgKFxuICAgICAgdGhpcy5maWVsZCAmJlxuICAgICAgdGhpcy5maWVsZC50ZW1wbGF0ZU9wdGlvbnMgJiZcbiAgICAgIHRoaXMuZmllbGQudGVtcGxhdGVPcHRpb25zLmF0dGFjaG1lbnQgJiZcbiAgICAgIHRoaXMuZmllbGQudGVtcGxhdGVPcHRpb25zLmF0dGFjaG1lbnQudHlwZVxuICAgICkge1xuICAgICAgbGV0IHR5cGVzOiBhbnkgPSB0aGlzLmZpZWxkLnRlbXBsYXRlT3B0aW9ucy5hdHRhY2htZW50LnR5cGU7XG4gICAgICBpZiAodHlwZXMgIT0gdW5kZWZpbmVkICYmIHR5cGVzICE9IG51bGwgJiYgdHlwZXMgIT0gXCJcIikge1xuICAgICAgICByZXN1bHQgPSB0eXBlcy5zcGxpdChcIixcIikuc29tZSgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZpbGUudHlwZSA9PT0gaXRlbTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBjaGVja0ZpbGVTaXplKGZpbGU6IEZpbGUpIHtcbiAgICBsZXQgcmVzdWx0OiBib29sZWFuID0gdHJ1ZTtcbiAgICBpZiAoXG4gICAgICB0aGlzLmZpZWxkICYmXG4gICAgICB0aGlzLmZpZWxkLnRlbXBsYXRlT3B0aW9ucyAmJlxuICAgICAgdGhpcy5maWVsZC50ZW1wbGF0ZU9wdGlvbnMuYXR0YWNobWVudCAmJlxuICAgICAgdGhpcy5maWVsZC50ZW1wbGF0ZU9wdGlvbnMuYXR0YWNobWVudC5zaXplXG4gICAgKSB7XG4gICAgICBsZXQgc2l6ZTogYW55ID0gdGhpcy5maWVsZC50ZW1wbGF0ZU9wdGlvbnMuYXR0YWNobWVudC5zaXplO1xuICAgICAgaWYgKHNpemUgIT0gdW5kZWZpbmVkICYmIHNpemUgIT0gbnVsbCkge1xuICAgICAgICByZXN1bHQgPSBmaWxlLnNpemUgLyAxMDI0IC8gMTAyNCA8PSBzaXplO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=