From 4a08b2c7a1738410c5795ef107e662bc0091a127 Mon Sep 17 00:00:00 2001 From: Eduard Tihomirov Date: Mon, 8 Sep 2025 12:01:40 +0300 Subject: [PATCH] SUPPORT-9339: Fix --- .../component/fileupload/ErvuFileUpload.ts | 50 +-- .../ErvuFileUploadWithAdditionalFiles.ts | 56 +++ frontend/src/ts/modules/app/app.module.ts | 4 + .../Личный кабинет юр лица.page | 383 ++++++++++++++++-- 4 files changed, 436 insertions(+), 57 deletions(-) create mode 100644 frontend/src/ts/ervu/component/fileupload/ErvuFileUploadWithAdditionalFiles.ts diff --git a/frontend/src/ts/ervu/component/fileupload/ErvuFileUpload.ts b/frontend/src/ts/ervu/component/fileupload/ErvuFileUpload.ts index b79f69f9..eea94ad0 100644 --- a/frontend/src/ts/ervu/component/fileupload/ErvuFileUpload.ts +++ b/frontend/src/ts/ervu/component/fileupload/ErvuFileUpload.ts @@ -5,7 +5,7 @@ import { Event, MessagesService, UnsupportedOperationError, - AppConfigService, ObjectRef + AppConfigService } from "@webbpm/base-package"; import {ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef} from "@angular/core"; import {FileItem, FileUploader} from "ng2-file-upload"; @@ -23,10 +23,6 @@ import {TokenConstants} from "../../../modules/security/TokenConstants"; export class ErvuFileUpload extends InputControl { private static readonly BACKEND_URL: string = "backend.context"; - @ObjectRef() - public signFileUploadRef: ErvuFileUpload; - @ObjectRef() - public mchdFileUploadRef: ErvuFileUpload; @NotNull("true") public selectFileFieldText: string; @NotNull("true") @@ -65,7 +61,7 @@ export class ErvuFileUpload extends InputControl { private messagesService: MessagesService; private isUploadErrorOccurred = false; private appConfigService: AppConfigService; - private cookieService: CookieService; + public cookieService: CookieService; constructor(el: ElementRef, cd: ChangeDetectorRef) { super(el, cd); @@ -139,34 +135,26 @@ export class ErvuFileUpload extends InputControl { this.cd.markForCheck(); } - private setUploaderMethods() { + public setUploaderMethods() { this.uploader.onBeforeUploadItem = (fileItem: FileItem) => { - const additionalParams: any = { - signFile: this.signFileUploadRef.uploader.queue[0]._file - }; - - if (this.mchdFileUploadRef && this.mchdFileUploadRef.uploader.queue.length > 0) { - additionalParams.mchdFile = this.mchdFileUploadRef.uploader.queue[0]._file; - } //refresh headers - this.uploader.setOptions({ - headers: [ - { - name: "X-Employee-Info-File-Form-Type", - value: EmployeeInfoFileFormType[this.formType] - }, - { - name: "Client-Time-Zone", - value: Intl.DateTimeFormat().resolvedOptions().timeZone - }, - { - name: TokenConstants.CSRF_HEADER_NAME, - value: this.cookieService.get(TokenConstants.CSRF_TOKEN_NAME) - } - ], - additionalParameter: additionalParams - }); + this.uploader.setOptions({ + headers: [ + { + name: "X-Employee-Info-File-Form-Type", + value: EmployeeInfoFileFormType[this.formType] + }, + { + name: "Client-Time-Zone", + value: Intl.DateTimeFormat().resolvedOptions().timeZone + }, + { + name: TokenConstants.CSRF_HEADER_NAME, + value: this.cookieService.get(TokenConstants.CSRF_TOKEN_NAME) + } + ] + }); this.fileUploadStartEvent.trigger(); this.isDropZoneVisible = false; this.isFilesListVisible = false; diff --git a/frontend/src/ts/ervu/component/fileupload/ErvuFileUploadWithAdditionalFiles.ts b/frontend/src/ts/ervu/component/fileupload/ErvuFileUploadWithAdditionalFiles.ts new file mode 100644 index 00000000..bad8e760 --- /dev/null +++ b/frontend/src/ts/ervu/component/fileupload/ErvuFileUploadWithAdditionalFiles.ts @@ -0,0 +1,56 @@ +import {ObjectRef} from "@webbpm/base-package"; +import {ChangeDetectionStrategy, Component} from "@angular/core"; +import {FileItem} from "ng2-file-upload"; +import {EmployeeInfoFileFormType} from "./EmployeeInfoFileFormType"; +import {TokenConstants} from "../../../modules/security/TokenConstants"; +import {ErvuFileUpload} from "./ErvuFileUpload"; + +@Component({ + moduleId: module.id, + selector: "ervu-additional-file-upload", + templateUrl: "./../../../../../src/resources/template/ervu/component/ErvuFileUpload.html", + changeDetection: ChangeDetectionStrategy.OnPush + }) +export class ErvuFileUploadWithAdditionalFiles extends ErvuFileUpload { + + @ObjectRef() + public signFileUploadRef: ErvuFileUpload; + @ObjectRef() + public mchdFileUploadRef: ErvuFileUpload; + + public setUploaderMethods() { + this.uploader.onBeforeUploadItem = (fileItem: FileItem) => { + const additionalParams: any = { + signFile: this.signFileUploadRef.uploader.queue[0]._file + }; + + if (this.mchdFileUploadRef && this.mchdFileUploadRef.uploader.queue.length > 0) { + additionalParams.mchdFile = this.mchdFileUploadRef.uploader.queue[0]._file; + } + + //refresh headers + this.uploader.setOptions({ + headers: [ + { + name: "X-Employee-Info-File-Form-Type", + value: EmployeeInfoFileFormType[this.formType] + }, + { + name: "Client-Time-Zone", + value: Intl.DateTimeFormat().resolvedOptions().timeZone + }, + { + name: TokenConstants.CSRF_HEADER_NAME, + value: this.cookieService.get(TokenConstants.CSRF_TOKEN_NAME) + } + ], + additionalParameter: additionalParams + }); + this.fileUploadStartEvent.trigger(); + this.isDropZoneVisible = false; + this.isFilesListVisible = false; + this.isProgressBarVisible = true; + this.cd.markForCheck(); + }; + } +} diff --git a/frontend/src/ts/modules/app/app.module.ts b/frontend/src/ts/modules/app/app.module.ts index 792a4c3f..a24ea8fd 100644 --- a/frontend/src/ts/modules/app/app.module.ts +++ b/frontend/src/ts/modules/app/app.module.ts @@ -27,6 +27,9 @@ import {ErvuDownloadFileButton} from "../../ervu/component/button/ErvuDownloadFi import {AuthenticationService} from "../security/authentication.service"; import {HomeLandingComponent} from "./component/home-landing.component"; import {AuditService} from "../../ervu/service/AuditService"; +import { + ErvuFileUploadWithAdditionalFiles +} from "../../ervu/component/fileupload/ErvuFileUploadWithAdditionalFiles"; registerLocaleData(localeRu); export const DIRECTIVES = [ @@ -36,6 +39,7 @@ export const DIRECTIVES = [ forwardRef(() => AccessDeniedComponent), forwardRef(() => AppProgressIndicationComponent), forwardRef(() => ErvuFileUpload), + forwardRef(() => ErvuFileUploadWithAdditionalFiles), forwardRef(() => ErvuDownloadFileButton), forwardRef(() => InMemoryStaticGrid), forwardRef(() => HomeLandingComponent), diff --git a/resources/src/main/resources/business-model/Личный кабинет юр лица.page b/resources/src/main/resources/business-model/Личный кабинет юр лица.page index 4e016a8e..0f128268 100644 --- a/resources/src/main/resources/business-model/Личный кабинет юр лица.page +++ b/resources/src/main/resources/business-model/Личный кабинет юр лица.page @@ -1078,7 +1078,7 @@ behavior - {"objectId":"7d338f47-6d12-4040-ba18-f31f520dce8d","packageName":"ervu.component.fileupload","className":"ErvuFileUpload","type":"TS"} + {"objectId":"7d338f47-6d12-4040-ba18-f31f520dce8d","packageName":"ervu.component.fileupload","className":"ErvuFileUploadWithAdditionalFiles","type":"TS"} @@ -1113,7 +1113,7 @@ behavior - {"objectId":"7d338f47-6d12-4040-ba18-f31f520dce8d","packageName":"ervu.component.fileupload","className":"ErvuFileUpload","type":"TS"} + {"objectId":"7d338f47-6d12-4040-ba18-f31f520dce8d","packageName":"ervu.component.fileupload","className":"ErvuFileUploadWithAdditionalFiles","type":"TS"} @@ -1514,6 +1514,16 @@ false false +false +true + + + + ErvuFileUploadWithAdditionalFiles + ervu.component.fileupload + +true +true collectible @@ -1531,6 +1541,18 @@ + + displayFileSize + + true + + + + displayProgressBar + + true + + extensionFilter @@ -1590,6 +1612,12 @@ {"objectId":"409c0323-011e-4416-a631-f8f852299e1f","packageName":"ervu.component.fileupload","className":"ErvuFileUpload","type":"TS"} + + visible + + true + + @@ -1802,21 +1830,302 @@ + + 98594cec-0a9b-4cef-af09-e1b71cb2ad9e + 81d2a10f-eb67-4002-9cbd-1e67b87888ef + Action Controller + false + false + + + + elseActions + + + + + + behavior + +{"objectId":"1dc25461-a60e-456b-93cb-cc0f28dc347b","packageName":"ervu.component.fileupload","className":"ErvuFileUpload","type":"TS"} + + + + method + +"setVisible" + + + + value + + + + staticValue + + + boolean + + + false + + + + + + + + + + + + + behavior + +{"objectId":"9b446462-16e5-4241-b409-0287dea92b3a","packageName":"component","className":"Text","type":"TS"} + + + + method + +"setVisible" + + + + value + + + + staticValue + + + boolean + + + false + + + + + + + + + + + + eventRefs + + + + + + behavior + +{"objectId":"e958f2ee-e112-4bef-9c8a-40e2f8278ca9","packageName":"component.field","className":"CheckBox","type":"TS"} + + + + propertyName + +"userChangeValueEvent" + + + + + + + + + ifCondition + + + + conditions + + + + + + _isGroupSelected + + false + + + + one + + + + conditionFirstPart + + + +objectValue + + + + behavior + + {"objectId":"e958f2ee-e112-4bef-9c8a-40e2f8278ca9","packageName":"component.field","className":"CheckBox","type":"TS"} + + + + method + + "getValue" + + + + + + + + + + conditionSecondPart + + + +staticValue + + + boolean + + + true + + + + + + + operation + + "EQUALS" + + + + + + + + + + + + logicalOperation + + null + + + + + + + thenActions + + + + + + behavior + +{"objectId":"1dc25461-a60e-456b-93cb-cc0f28dc347b","packageName":"ervu.component.fileupload","className":"ErvuFileUpload","type":"TS"} + + + + method + +"setVisible" + + + + value + + + + staticValue + + + boolean + + + true + + + + + + + + + + + + + behavior + +{"objectId":"9b446462-16e5-4241-b409-0287dea92b3a","packageName":"component","className":"Text","type":"TS"} + + + + method + +"setVisible" + + + + value + + + + staticValue + + + boolean + + + true + + + + + + + + + + + + + 8b755f7b-e52b-4800-830a-f01467cd5cbb e958f2ee-e112-4bef-9c8a-40e2f8278ca9 Check box false false - + + + + label + + null + + + + - + +false + - + ba24d307-0b91-4299-ba82-9d0b52384ff2 - f0794dfe-f0e9-446b-8029-c4ff9640f650 + 88c07c71-e76e-4ff6-a24d-b838bc495737 Текст false false @@ -1825,16 +2134,11 @@ cssClasses - + "subtitle" - - - - - @@ -1843,12 +2147,6 @@ "Внимание: если файл подписан не руководителем организации, рекомендуется приложить МЧД" - - label - - null - - @@ -1858,6 +2156,13 @@ false + + d7d54cfb-26b5-4dba-b56f-b6247183c24d + 5751d822-0921-4109-9004-ba5d948cf2c4 + Hbox + true + true + 5694e7c5-bbb5-4d23-be6c-7ad71b8ad38c 1dc25461-a60e-456b-93cb-cc0f28dc347b @@ -1930,6 +2235,12 @@ "Перетащите файл или выберите на компьютере" + + visible + + false + + @@ -1957,6 +2268,12 @@ "Поддерживаемый формат файла - xml" + + visible + + false + + @@ -1966,6 +2283,20 @@ false + + 9d1b5af1-0b8f-4b1b-b9a5-c2e6acf72d91 + b758e782-c557-445b-a0da-fcc5a79a36e9 + Vbox + true + true + + + 9d1b5af1-0b8f-4b1b-b9a5-c2e6acf72d91 + ddb464de-7f23-40dd-88bb-a06578ecf0e3 + Vbox + true + true + 5ebd2885-0972-4e51-8376-1fa66aed9a90 @@ -2032,7 +2363,7 @@ behavior - {"objectId":"7d338f47-6d12-4040-ba18-f31f520dce8d","packageName":"ervu.component.fileupload","className":"ErvuFileUpload","type":"TS"} + {"objectId":"7d338f47-6d12-4040-ba18-f31f520dce8d","packageName":"ervu.component.fileupload","className":"ErvuFileUploadWithAdditionalFiles","type":"TS"} @@ -2095,7 +2426,7 @@ behavior - {"objectId":"7d338f47-6d12-4040-ba18-f31f520dce8d","packageName":"ervu.component.fileupload","className":"ErvuFileUpload","type":"TS"} + {"objectId":"7d338f47-6d12-4040-ba18-f31f520dce8d","packageName":"ervu.component.fileupload","className":"ErvuFileUploadWithAdditionalFiles","type":"TS"} @@ -2252,7 +2583,7 @@ behavior - {"objectId":"7d338f47-6d12-4040-ba18-f31f520dce8d","packageName":"ervu.component.fileupload","className":"ErvuFileUpload","type":"TS"} + {"objectId":"7d338f47-6d12-4040-ba18-f31f520dce8d","packageName":"ervu.component.fileupload","className":"ErvuFileUploadWithAdditionalFiles","type":"TS"} @@ -2315,7 +2646,7 @@ behavior - {"objectId":"7d338f47-6d12-4040-ba18-f31f520dce8d","packageName":"ervu.component.fileupload","className":"ErvuFileUpload","type":"TS"} + {"objectId":"7d338f47-6d12-4040-ba18-f31f520dce8d","packageName":"ervu.component.fileupload","className":"ErvuFileUploadWithAdditionalFiles","type":"TS"} @@ -2515,7 +2846,7 @@ behavior - {"objectId":"7d338f47-6d12-4040-ba18-f31f520dce8d","packageName":"ervu.component.fileupload","className":"ErvuFileUpload","type":"TS"} + {"objectId":"7d338f47-6d12-4040-ba18-f31f520dce8d","packageName":"ervu.component.fileupload","className":"ErvuFileUploadWithAdditionalFiles","type":"TS"} @@ -2594,7 +2925,7 @@ behavior - {"objectId":"7d338f47-6d12-4040-ba18-f31f520dce8d","packageName":"ervu.component.fileupload","className":"ErvuFileUpload","type":"TS"} + {"objectId":"7d338f47-6d12-4040-ba18-f31f520dce8d","packageName":"ervu.component.fileupload","className":"ErvuFileUploadWithAdditionalFiles","type":"TS"} @@ -2860,7 +3191,7 @@ behavior - {"objectId":"7d338f47-6d12-4040-ba18-f31f520dce8d","packageName":"ervu.component.fileupload","className":"ErvuFileUpload","type":"TS"} + {"objectId":"7d338f47-6d12-4040-ba18-f31f520dce8d","packageName":"ervu.component.fileupload","className":"ErvuFileUploadWithAdditionalFiles","type":"TS"} @@ -2967,7 +3298,7 @@ behavior - {"objectId":"7d338f47-6d12-4040-ba18-f31f520dce8d","packageName":"ervu.component.fileupload","className":"ErvuFileUpload","type":"TS"} + {"objectId":"7d338f47-6d12-4040-ba18-f31f520dce8d","packageName":"ervu.component.fileupload","className":"ErvuFileUploadWithAdditionalFiles","type":"TS"}