- saving progress;

This commit is contained in:
Vitalii Kiiko
2024-12-09 15:29:50 +01:00
parent 5efe8aa377
commit 2405721695
7 changed files with 143 additions and 23 deletions

View File

@@ -67,87 +67,87 @@ export const protocolType = [
export const classificationType = [ export const classificationType = [
{ {
'idClassificazione': 101, 'idClassificazione': 1,
'name': 'BILANCIO', 'name': 'BILANCIO',
'idTipoprotocollo': 1 'idTipoprotocollo': 1
}, },
{ {
'idClassificazione': 102, 'idClassificazione': 2,
'name': 'DICHHIARAZIONE DEI REDDITI', 'name': 'DICHHIARAZIONE DEI REDDITI',
'idTipoprotocollo': 1 'idTipoprotocollo': 1
}, },
{ {
'idClassificazione': 103, 'idClassificazione': 3,
'name': 'SITUAZIONE CONTABILE', 'name': 'SITUAZIONE CONTABILE',
'idTipoprotocollo': 1 'idTipoprotocollo': 1
}, },
{ {
'idClassificazione': 104, 'idClassificazione': 4,
'name': 'PROSPETTO CONTO ECONOMICO', 'name': 'PROSPETTO CONTO ECONOMICO',
'idTipoprotocollo': 1 'idTipoprotocollo': 1
}, },
{ {
'idClassificazione': 105, 'idClassificazione': 5,
'name': 'CENTRALE DEI RISCHI', 'name': 'CENTRALE DEI RISCHI',
'idTipoprotocollo': 1 'idTipoprotocollo': 1
}, },
{ {
'idClassificazione': 106, 'idClassificazione': 6,
'name': 'RELAZIONE AZIENDALE ILLUSTRATIVA (MOD R1C, R1I, R1R, R1R A SECONDO DEI ', 'name': 'RELAZIONE AZIENDALE ILLUSTRATIVA (MOD R1C, R1I, R1R, R1R A SECONDO DEI ',
'idTipoprotocollo': 1 'idTipoprotocollo': 1
}, },
{ {
'idClassificazione': 107, 'idClassificazione': 7,
'name': 'DOCUMENTO IDENTITA\'', 'name': 'DOCUMENTO IDENTITA\'',
'idTipoprotocollo': 1 'idTipoprotocollo': 1
}, },
{ {
'idClassificazione': 108, 'idClassificazione': 8,
'name': 'MODELLO SP1', 'name': 'MODELLO SP1',
'idTipoprotocollo': 1 'idTipoprotocollo': 1
}, },
{ {
'idClassificazione': 109, 'idClassificazione': 9,
'name': 'PRIVACY', 'name': 'PRIVACY',
'idTipoprotocollo': 1 'idTipoprotocollo': 1
}, },
{ {
'idClassificazione': 110, 'idClassificazione': 10,
'name': 'DOCUMENTAZIONE CHE ATTESTA POSSIBILITA\' DI RILASCIARE GAA FAVORE', 'name': 'DOCUMENTAZIONE CHE ATTESTA POSSIBILITA\' DI RILASCIARE GAA FAVORE',
'idTipoprotocollo': 1 'idTipoprotocollo': 1
}, },
{ {
'idClassificazione': 111, 'idClassificazione': 11,
'name': 'MODELLO AR1 D.LG 231/2007', 'name': 'MODELLO AR1 D.LG 231/2007',
'idTipoprotocollo': 1 'idTipoprotocollo': 1
}, },
{ {
'idClassificazione': 112, 'idClassificazione': 12,
'name': 'DOCUMENTO IDENTITA\' FIRMATORIO DICHHIARAZIONE SOSTITUTIVA', 'name': 'DOCUMENTO IDENTITA\' FIRMATORIO DICHHIARAZIONE SOSTITUTIVA',
'idTipoprotocollo': 1 'idTipoprotocollo': 1
}, },
{ {
'idClassificazione': 113, 'idClassificazione': 13,
'name': 'PRIVACY FIRMATARIO DICHHIARAZIONE SOSTITUTIVA', 'name': 'PRIVACY FIRMATARIO DICHHIARAZIONE SOSTITUTIVA',
'idTipoprotocollo': 1 'idTipoprotocollo': 1
}, },
{ {
'idClassificazione': 114, 'idClassificazione': 14,
'name': 'NULLAOSTA ANTIMAFIA', 'name': 'NULLAOSTA ANTIMAFIA',
'idTipoprotocollo': 1 'idTipoprotocollo': 1
}, },
{ {
'idClassificazione': 201, 'idClassificazione': 1,
'name': 'LETTERA ESITO DELIBERA', 'name': 'LETTERA ESITO DELIBERA',
'idTipoprotocollo': 2 'idTipoprotocollo': 2
}, },
{ {
'idClassificazione': 202, 'idClassificazione': 2,
'name': 'LETTERA DI GARANZIA', 'name': 'LETTERA DI GARANZIA',
'idTipoprotocollo': 1 'idTipoprotocollo': 1
}, },
{ {
'idClassificazione': 203, 'idClassificazione': 3,
'name': 'GENERICO', 'name': 'GENERICO',
'idTipoprotocollo': 3 'idTipoprotocollo': 3
} }

View File

@@ -18,7 +18,7 @@ import set404FromErrorResponse from '../../../../helpers/set404FromErrorResponse
import { storeSet } from '../../../../store'; import { storeSet } from '../../../../store';
import { Toast } from 'primereact/toast'; import { Toast } from 'primereact/toast';
const ArchiveDocument = ({ applicationId, ndg = '', fileId = 0 }) => { const ArchiveDocument = ({ applicationId, ndg = '', fileId = 0, docAttachmentId = null }) => {
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [isVisibleDialog, setIsVisibleDialog] = useState(false); const [isVisibleDialog, setIsVisibleDialog] = useState(false);
const [modalData, setModalData] = useState({}); const [modalData, setModalData] = useState({});
@@ -119,7 +119,7 @@ const ArchiveDocument = ({ applicationId, ndg = '', fileId = 0 }) => {
setTypes(protocolType.map(o => ({ value: o.id, label: o.name }))); setTypes(protocolType.map(o => ({ value: o.id, label: o.name })));
}, []); }, []);
return (!isEmpty(ndg) return (!isEmpty(ndg) && !docAttachmentId
? <> ? <>
<Toast ref={toast}/> <Toast ref={toast}/>
<Button icon="pi pi-file-export" <Button icon="pi pi-file-export"

View File

@@ -53,7 +53,7 @@ const ListOfFiles = ({ files, updateFn, shouldDisableFieldFn, name, ndg, applica
}}> }}>
<span>{k.name}</span> <span>{k.name}</span>
<div className="appPageSection__iconActions"> <div className="appPageSection__iconActions">
<ArchiveDocument ndg={ndg} applicationId={applicationId} fileId={k.id}/> <ArchiveDocument ndg={ndg} applicationId={applicationId} fileId={k.id} docAttachmentId={k.documentAttachmentId}/>
<Button icon="pi pi-eye" rounded <Button icon="pi pi-eye" rounded
onClick={() => { onClick={() => {
window.open(k.filePath, '_blank').focus() window.open(k.filePath, '_blank').focus()

View File

@@ -0,0 +1,103 @@
import React, { useMemo, useState, useEffect } from 'react';
import { klona } from 'klona';
import { useForm } from 'react-hook-form';
// tools
import uniqid from '../../../../helpers/uniqid';
// components
import FormField from '../../../../components/FormField';
import { __ } from '@wordpress/i18n';
import { Button } from 'primereact/button';
const RepeaterFields = ({ sourceId, sourceName }) => {
const [items, setItems] = useState([]);
const [chosen, setChosen] = useState({});
const [formInitialData, setFormInitialData] = useState({});
const {
control,
handleSubmit,
formState: { errors },
setValue,
register,
trigger,
getValues
} = useForm({
defaultValues: useMemo(() => {
return formInitialData;
}, [formInitialData]), mode: 'onChange'
});
const onSubmit = () => {
};
const doUpdateAmendment = () => {
trigger();
let formValues = klona(getValues());
console.log('formValues', formValues);
}
const addNew = () => {
const uid = uniqid('f');
const newItem = {
fieldId: uid,
name: '',
file: {},
}
setItems([...items, newItem]);
setChosen(newItem);
}
useEffect(() => {
}, [chosen])
console.log('items', items);
return (
<div className="fieldsRepeater">
<form className="appForm" onSubmit={handleSubmit(onSubmit)}>
{items
? items.map(o => <div key={o.fieldId}>
<div className="fieldsRepeater__Heading">
<span>{o.name}</span>
</div>
{chosen.fieldId === o.fieldId
? <div className="fieldsRepeater__fields">
<FormField
type="textinput"
fieldName="name"
label={__('Titolo del file', 'gepafin')}
control={control}
errors={errors}
defaultValue={formInitialData['name']}
config={{ required: __('È obbligatorio', 'gepafin') }}
/>
<FormField
type="fileupload"
setDataFn={setValue}
saveFormCallback={doUpdateAmendment}
fieldName="file"
label={__('File', 'gepafin')}
control={control}
register={register}
errors={errors}
defaultValue={formInitialData['file'] ? formInitialData['file'] : []}
accept={[]}
source={sourceName}
sourceId={sourceId}
multiple={false}
/>
</div> : null}
</div>
) : null}
</form>
<Button
type="button"
disabled={false}
onClick={addNew}
label={__('Aggiungi nuovo', 'gepafin')}
/>
</div>
)
}
export default RepeaterFields;

View File

@@ -37,6 +37,7 @@ import DownloadCompanyDelegation from './components/DownloadCompanyDelegation';
import DownloadSignedApplication from './components/DownloadSignedApplication'; import DownloadSignedApplication from './components/DownloadSignedApplication';
import AppointmentService from '../../service/appointment-service'; import AppointmentService from '../../service/appointment-service';
import ListOfFiles from './components/ListOfFiles'; import ListOfFiles from './components/ListOfFiles';
import RepeaterFields from './components/RepeaterFields';
const APP_EVALUATION_FLOW_ID = process.env.REACT_APP_EVALUATION_FLOW_ID; const APP_EVALUATION_FLOW_ID = process.env.REACT_APP_EVALUATION_FLOW_ID;
@@ -534,11 +535,15 @@ const DomandaEditPreInstructor = () => {
</div> </div>
</div> </div>
<div className="appPageSection">
<h2>{__('Documenti aggiuntivi', 'gepafin')}</h2>
<RepeaterFields sourceId={id} sourceName="evaluation"/>
</div>
<div className="appPageSection"> <div className="appPageSection">
<h2>{__('Checklist Valutazione', 'gepafin')}</h2> <h2>{__('Checklist Valutazione', 'gepafin')}</h2>
<div className="appPageSection columns"> <div className="appPageSection columns">
<div> <div>
<h3>{__('Lista', 'gepafin')}</h3> <h3>{__('Lista', 'gepafin')}</h3>
<div className="appPageSection__withBorder grey" style={{ marginBottom: '20px' }}> <div className="appPageSection__withBorder grey" style={{ marginBottom: '20px' }}>
<div className="appPageSection__checklist"> <div className="appPageSection__checklist">
@@ -584,6 +589,17 @@ const DomandaEditPreInstructor = () => {
</div> </div>
</div> </div>
<div className="appPageSection">
<h2>{__('Documenti di soccorso', 'gepafin')}</h2>
<ListOfFiles
files={data.files}
updateFn={updateEvaluationValue}
shouldDisableFieldFn={shouldDisableField}
name="files"
ndg={data.ndg}
applicationId={id}/>
</div>
<div className="appPageSection"> <div className="appPageSection">
<h2>{__('Punteggi di valutazione', 'gepafin')}</h2> <h2>{__('Punteggi di valutazione', 'gepafin')}</h2>
{data.criteria {data.criteria

View File

@@ -9,6 +9,6 @@ export default class AppointmentService {
}; };
static archiveDocument = (applicationId, documentId, body, callback, errCallback, queryParams) => { static archiveDocument = (applicationId, documentId, body, callback, errCallback, queryParams) => {
NetworkService.post(`${API_BASE_URL}/appointment/application/${applicationId}/document/${documentId}`, {}, callback, errCallback, queryParams); NetworkService.post(`${API_BASE_URL}/appointment/application/${applicationId}/document/${documentId}`, body, callback, errCallback, queryParams);
}; };
} }

View File

@@ -8,6 +8,7 @@ export class NetworkService {
static REFRESH_TOKEN_KEY static REFRESH_TOKEN_KEY
static logApiError = (endpoint, status = 0, resp = {}) => { static logApiError = (endpoint, status = 0, resp = {}) => {
console.log('status:', status);
if (status === 500) { if (status === 500) {
if (LOCAL_DEVELOPMENT !== '1') { if (LOCAL_DEVELOPMENT !== '1') {
try { try {