UNPKG

@kre-form/ant

Version:

201 lines (200 loc) 16.8 kB
/** * @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=