- saving progress;
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
|
|
||||||
@@ -528,17 +529,21 @@ const DomandaEditPreInstructor = () => {
|
|||||||
<div className="appPageSection">
|
<div className="appPageSection">
|
||||||
<h2>{__('Scarica documenti della domanda', 'gepafin')}</h2>
|
<h2>{__('Scarica documenti della domanda', 'gepafin')}</h2>
|
||||||
<div className="appPageSection__row autoFlow">
|
<div className="appPageSection__row autoFlow">
|
||||||
<DownloadApplicationArchive applicationId={id}/>
|
<DownloadApplicationArchive applicationId={id}/>
|
||||||
<DownloadSignedApplication applicationId={id}/>
|
<DownloadSignedApplication applicationId={id}/>
|
||||||
<DownloadCompanyDelegation applicationId={id}/>
|
<DownloadCompanyDelegation applicationId={id}/>
|
||||||
</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
|
||||||
|
|||||||
@@ -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);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user