22/09/2023 - 18h53
parent
a3d9886bc0
commit
3e02c431c0
|
@ -372,7 +372,7 @@ const AddParnerClient = (props) => {
|
|||
const [addcontact, setaddcontact] = useState("0");
|
||||
function Add_Contact() {
|
||||
setdatamodification_contact("0");
|
||||
setformedit_mode_contact("0");
|
||||
setformedit_mode_contact("1");
|
||||
clean_contact_set_values();
|
||||
setaddcontact("1");
|
||||
setcurrent_contact_recid("");
|
||||
|
@ -1701,13 +1701,13 @@ const AddParnerClient = (props) => {
|
|||
|
||||
} else {
|
||||
// Il s'agit d'un ajout d'une nouvelle activité. on a rien dans le current_activite_recid
|
||||
myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_activite/";
|
||||
myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Contact/";
|
||||
form.append("related_collection", "partner_client");
|
||||
form.append("related_collection_owner_email", p_client_email);
|
||||
}
|
||||
|
||||
|
||||
console.log(" ### current_contact_recid = ", current_contact_recid, " myurl = ", myurl)
|
||||
//console.log(" ### current_contact_recid = ", current_contact_recid, " myurl = ", myurl)
|
||||
|
||||
// Données de contact du client du partner
|
||||
var contact_email = ""
|
||||
|
@ -1952,6 +1952,7 @@ const AddParnerClient = (props) => {
|
|||
|
||||
|
||||
Disable_contact_fields();
|
||||
setformedit_mode_contact("0");
|
||||
|
||||
}
|
||||
else if (String(res.data.status) === String("Err_Connexion")) {
|
||||
|
@ -2531,8 +2532,8 @@ const AddParnerClient = (props) => {
|
|||
{String(submenu).trim() === "submenu_contact" && <div className="training_data">
|
||||
|
||||
{String(addcontact) !== "1" && <div className="div_row" style={{ "marginLeft": "5px", "marginRight": "5px", "paddingRight": "10px" }}>
|
||||
<div className="div_row" onClick={Add_Contact} > <AiOutlineUserAdd /> Ajouter un contact </div>
|
||||
<div className="div_row scroll_mysy">
|
||||
<div className="div_row" onClick={Add_Contact} style={{ "cursor": "pointer" }}> <AiOutlineUserAdd /> Ajouter un contact </div>
|
||||
<div className="div_row scroll_mysy" style={{ "height": "30rem", }}>
|
||||
<div className="contact_grid">
|
||||
|
||||
{Get_List_Contact_Of_client_Part_result && String(Get_List_Contact_Of_client_Part_api) === "true" &&
|
||||
|
@ -2569,7 +2570,7 @@ const AddParnerClient = (props) => {
|
|||
/>
|
||||
</div>
|
||||
|
||||
<div className="training_caract">
|
||||
{ String(formedit_mode_contact) === "1" && <div className="training_caract">
|
||||
<TextField
|
||||
required
|
||||
name="contact_civilite"
|
||||
|
@ -2577,13 +2578,38 @@ const AddParnerClient = (props) => {
|
|||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
select
|
||||
disabled={false}
|
||||
className="disabled_style"
|
||||
value={p_contact_civilite}
|
||||
onChange={(e) => setp_contact_civilite(e.target.value)}
|
||||
|
||||
>
|
||||
<MenuItem value="Mme" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Mme. </MenuItem>
|
||||
<MenuItem value="M." style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >M. </MenuItem>
|
||||
<MenuItem value="Neutre" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Neutre </MenuItem>
|
||||
|
||||
|
||||
</TextField>
|
||||
</div>}
|
||||
|
||||
{ String(formedit_mode_contact) !== "1" && <div className="training_caract">
|
||||
<TextField
|
||||
required
|
||||
name="contact_civilite"
|
||||
label="Civilité"
|
||||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
|
||||
disabled={false}
|
||||
className="disabled_style"
|
||||
value={p_contact_civilite}
|
||||
onChange={(e) => setp_contact_civilite(e.target.value)}
|
||||
|
||||
/>
|
||||
</div>
|
||||
|
||||
</div>}
|
||||
|
||||
|
||||
<div className="training_caract">
|
||||
|
|
|
@ -1930,7 +1930,7 @@ const Config_Documents = (props) => {
|
|||
|
||||
</div>
|
||||
<div className="div_row_droite" style={{ "textAlign": "left" }}>
|
||||
<div className="div_row"> Choisir un champ fff <br />
|
||||
<div className="div_row"> Choisir un champ <br />
|
||||
<TextField
|
||||
name="one_champ_table"
|
||||
id="one_champ_table"
|
||||
|
|
|
@ -3680,7 +3680,7 @@ const DisplayPartnerSession = (props) => {
|
|||
if (String(result['status']) === String("true")) {
|
||||
setrecord_Stagiaire_Image_api("true");
|
||||
setuserimgclassprofilchanged("");
|
||||
alert(" L'image à jour a été mise enregistrée ");
|
||||
alert(" L'image a été enregistrée ");
|
||||
|
||||
} else if (String(result['status']) === String("Err_Connexion")) {
|
||||
alert('Erreur: ' + result['message']);
|
||||
|
|
|
@ -1352,7 +1352,7 @@ const DisplayPartnerStagiaires = (props) => {
|
|||
if (String(result['status']) === String("true")) {
|
||||
setrecord_Stagiaire_Image_api("true");
|
||||
setuserimgclassprofilchanged("");
|
||||
alert(" L'image à jour a été mise enregistrée ");
|
||||
alert(" L'image a été enregistrée ");
|
||||
|
||||
} else if (String(result['status']) === String("Err_Connexion")) {
|
||||
alert('Erreur: ' + result['message']);
|
||||
|
@ -2063,10 +2063,11 @@ const DisplayPartnerStagiaires = (props) => {
|
|||
if (String(res.data.status) === String("true")) {
|
||||
setOne_Create_Participant_api("true");
|
||||
setOne_Create_Participant_result(res.data.message);
|
||||
alert(" Le participant a été correctement ajouté");
|
||||
setaddOneParticipant();
|
||||
Getall_TrainingParticipant();
|
||||
clear_one_Attende_Fields();
|
||||
alert(" Le participant a été correctement ajouté");
|
||||
myRef_head.current.scrollIntoView({ behavior: "smooth" });
|
||||
|
||||
} else if (String(res.data.status) === String("Err_Connexion")) {
|
||||
alert('Erreur: ' + res.data.message);
|
||||
|
@ -2082,7 +2083,7 @@ const DisplayPartnerStagiaires = (props) => {
|
|||
|
||||
console.warn('One_Create_Participant : Not good man :( = ' + error);
|
||||
setOne_Create_Participant_api("false");
|
||||
alert(" Impossible d'ajouter le participants")
|
||||
alert(" Impossible d'ajouter le participant")
|
||||
|
||||
})
|
||||
}
|
||||
|
@ -3293,7 +3294,7 @@ const DisplayPartnerStagiaires = (props) => {
|
|||
>
|
||||
{GetCurrentPartnerClass_result &&
|
||||
GetCurrentPartnerClass_result.map((myclass) => (
|
||||
<MenuItem key={JSON.parse(myclass).title} value={JSON.parse(myclass).internal_url} style={{ "paddingLeft": "5px", "textAlign": "left", }}>
|
||||
<MenuItem key={JSON.parse(myclass).title} value={JSON.parse(myclass).internal_url} style={{ "paddingLeft": "5px", "textAlign": "left", "width":"100%" }}>
|
||||
{JSON.parse(myclass).title}
|
||||
|
||||
</MenuItem>
|
||||
|
|
|
@ -67,11 +67,11 @@ const Employes = (props) => {
|
|||
const columns = [
|
||||
{ field: '_id', headerName: '_id', hide: true },
|
||||
{ field: 'id', headerName: 'id', hide: true },
|
||||
{ field: 'email', headerName: 'email', width: 150, hideable: false, },
|
||||
{ field: 'nom', headerName: 'nom', width: 150, hide: false, editable: true },
|
||||
{ field: 'prenom', headerName: 'prenom', width: 150, hide: false, editable: true },
|
||||
{ field: 'email', headerName: 'email', flex: 1, hideable: false, },
|
||||
{ field: 'nom', headerName: 'nom', flex: 1, hide: false, },
|
||||
{ field: 'prenom', headerName: 'prenom', flex: 1, hide: false, },
|
||||
{
|
||||
field: 'ismanager', headerName: 'Manager', width: 150, hide: false, editable: true,
|
||||
field: 'ismanager', headerName: 'Manager', width: 150, hide: false,
|
||||
valueFormatter: (params) => {
|
||||
if (String(params.value) === "0")
|
||||
return "Non";
|
||||
|
@ -82,9 +82,9 @@ const Employes = (props) => {
|
|||
return String(params.value);
|
||||
},
|
||||
},
|
||||
{ field: 'telephone_mobile', headerName: 'Mobile', width: 150, hide: false, editable: true },
|
||||
{ field: 'telephone_mobile', headerName: 'Mobile', width: 150, hide: false, },
|
||||
{
|
||||
field: 'civilite', headerName: 'Civilité', width: 150, hide: false, editable: true,
|
||||
field: 'civilite', headerName: 'Civilité', width: 150, hide: false,
|
||||
valueFormatter: (params) => {
|
||||
if (String(params.value) === "0")
|
||||
return "Mme";
|
||||
|
@ -96,8 +96,8 @@ const Employes = (props) => {
|
|||
return String(params.value);
|
||||
},
|
||||
},
|
||||
{ field: 'profil', headerName: 'profil', width: 150, hide: false, editable: true },
|
||||
{ field: 'fonction', headerName: 'Fonction', width: 150, hide: false, editable: true },
|
||||
{ field: 'profil', headerName: 'profil', width: 150, hide: false, },
|
||||
{ field: 'fonction', headerName: 'Fonction', width: 150, hide: false, },
|
||||
|
||||
/* {
|
||||
field: "Detail", headerName: 'Voir detail',
|
||||
|
@ -183,11 +183,11 @@ const Employes = (props) => {
|
|||
const columns_employee_affectation = [
|
||||
{ field: '_id', headerName: '_id', hide: true },
|
||||
{ field: 'id', headerName: 'id', hide: true },
|
||||
{ field: 'poste', headerName: 'Poste', width: 150, hideable: false, },
|
||||
{ field: 'date_du', headerName: 'Du', width: 150, hide: false, editable: true },
|
||||
{ field: 'date_au', headerName: 'Au', width: 150, hide: false, editable: true },
|
||||
{ field: 'related_target_collection_object', headerName: 'Cible', width: 150, hide: false, editable: true },
|
||||
{ field: 'related_target_collection_id_nom', headerName: 'Cible Nom', width: 150, hide: false, editable: true },
|
||||
{ field: 'poste', headerName: 'Poste', flex: 1, hideable: false, },
|
||||
{ field: 'date_du', headerName: 'Du', width: 150, hide: false, },
|
||||
{ field: 'date_au', headerName: 'Au', width: 150, hide: false, },
|
||||
{ field: 'related_target_collection_object', headerName: 'Cible', flex: 1, hide: false, },
|
||||
{ field: 'related_target_collection_id_nom', headerName: 'Cible Nom', flex: 1, hide: false, },
|
||||
{ field: 'target_related_collection', headerName: 'Type', hide: true },
|
||||
{ field: 'target_related_collection_id', headerName: 'Type ID', hide: true },
|
||||
{
|
||||
|
@ -341,7 +341,7 @@ const Employes = (props) => {
|
|||
setAdd_new_affectation("");
|
||||
clean_affectation_fields();
|
||||
clean_nouvelle_affectation_fields();
|
||||
setsubmenu("");
|
||||
|
||||
|
||||
var line = JSON.parse(rows_affectations[selected_row_id]);
|
||||
|
||||
|
@ -1289,7 +1289,7 @@ const Employes = (props) => {
|
|||
if (String(result['status']) === String("true")) {
|
||||
setrecord_employee_Image_api("true");
|
||||
setuserimgclassprofilchanged("");
|
||||
alert(" L'image à jour a été mise enregistrée ");
|
||||
alert(" L'image a été enregistrée ");
|
||||
|
||||
} else if (String(result['status']) === String("Err_Connexion")) {
|
||||
alert('Erreur: ' + result['message']);
|
||||
|
@ -1839,6 +1839,12 @@ const Employes = (props) => {
|
|||
if (String(employee_data_edit_mode) !== "1")
|
||||
disable_Employee_DetailFields();
|
||||
|
||||
setSelectionModel_affectations([]);
|
||||
setdisplay_affectation("0");
|
||||
setAdd_new_affectation("");
|
||||
clean_affectation_fields();
|
||||
clean_nouvelle_affectation_fields();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -1892,7 +1898,11 @@ const Employes = (props) => {
|
|||
document.getElementById("affectation").style.backgroundColor = "#d8edfc";
|
||||
document.getElementById("affectation").style.color = "black";
|
||||
}
|
||||
|
||||
setSelectionModel_affectations([]);
|
||||
setdisplay_affectation("0");
|
||||
setAdd_new_affectation("");
|
||||
clean_affectation_fields();
|
||||
clean_nouvelle_affectation_fields();
|
||||
|
||||
}
|
||||
|
||||
|
@ -2819,19 +2829,23 @@ const Employes = (props) => {
|
|||
</div>
|
||||
</div>
|
||||
<div className="div_row"> </div>
|
||||
<div className="div_row">
|
||||
{/*<div className="div_row">
|
||||
<Button variant="outlined" ref={myRef} onClick={submenu_detail_employe} className="detail_class_submenu" id='detail_employe' name='detail_employe'>Détail employé</Button>
|
||||
<Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'acces </Button>
|
||||
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
|
||||
|
||||
|
||||
</div>
|
||||
</div>*/}
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
{String(submenu) === "detail_employe" && String(add_One_Employee) !== "1" && <div className="div_row">
|
||||
<div className="div_row">
|
||||
<Button variant="outlined" ref={myRef} onClick={submenu_detail_employe} className="detail_class_submenu" id='detail_employe' name='detail_employe'>Détail employé</Button>
|
||||
<Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'acces </Button>
|
||||
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
|
||||
</div>
|
||||
|
||||
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Détail Employé </nav>
|
||||
<div className="div_row" style={{ "border": "None" }}>
|
||||
<div className="div_row_gauche">
|
||||
|
@ -3368,6 +3382,11 @@ const Employes = (props) => {
|
|||
|
||||
|
||||
{String(submenu) === "detail_employe" && String(add_One_Employee) === "1" && <div className="div_row">
|
||||
<div className="div_row">
|
||||
<Button variant="outlined" ref={myRef} onClick={submenu_detail_employe} className="detail_class_submenu" id='detail_employe' name='detail_employe'>Détail employé</Button>
|
||||
<Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'acces </Button>
|
||||
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
|
||||
</div>
|
||||
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Ajouter un Employé </nav>
|
||||
|
||||
<div className="session_data" >
|
||||
|
@ -3775,7 +3794,12 @@ const Employes = (props) => {
|
|||
|
||||
|
||||
{String(submenu) === "affectation" && <div className="div_row">
|
||||
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Affectation </nav>
|
||||
<div className="div_row">
|
||||
<Button variant="outlined" ref={myRef} onClick={submenu_detail_employe} className="detail_class_submenu" id='detail_employe' name='detail_employe'>Détail employé</Button>
|
||||
<Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'acces </Button>
|
||||
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
|
||||
</div>
|
||||
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Liste Affectations </nav>
|
||||
<div className="session_data">
|
||||
<div style={{ "border": "None" }}>
|
||||
|
||||
|
@ -4090,12 +4114,12 @@ const Employes = (props) => {
|
|||
<TextField
|
||||
name="affect_comment"
|
||||
id="affect_comment"
|
||||
text
|
||||
multiline
|
||||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
minRows={3}
|
||||
maxRows={3}
|
||||
rows={1}
|
||||
maxRows={1}
|
||||
disabled={false}
|
||||
className="disabled_style enable_style"
|
||||
value={p_affect_comment}
|
||||
|
@ -4277,12 +4301,12 @@ const Employes = (props) => {
|
|||
<TextField
|
||||
name="one_affect_comment"
|
||||
id="one_affect_comment"
|
||||
text
|
||||
multiline
|
||||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
minRows={3}
|
||||
maxRows={3}
|
||||
rows={1}
|
||||
maxRows={1}
|
||||
disabled={false}
|
||||
className="disabled_style enable_style"
|
||||
value={p_one_affect_comment}
|
||||
|
@ -4326,6 +4350,11 @@ const Employes = (props) => {
|
|||
|
||||
{String(submenu) === "droit_acces" && <div className="div_row">
|
||||
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Droit Acces </nav>
|
||||
<div className="div_row">
|
||||
<Button variant="outlined" ref={myRef} onClick={submenu_detail_employe} className="detail_class_submenu" id='detail_employe' name='detail_employe'>Détail employé</Button>
|
||||
<Button variant="outlined" onClick={submenu_droit_acces} className="detail_class_submenu" id='droit_acces' name='droit_acces'>Droits d'acces </Button>
|
||||
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
|
||||
</div>
|
||||
</div>}
|
||||
|
||||
|
||||
|
|
|
@ -4373,7 +4373,6 @@ function GestionAdministrative(props) {
|
|||
if (String(res.data.status) === String("true")) {
|
||||
setOne_Create_Participant_api("true");
|
||||
setOne_Create_Participant_result(res.data.message);
|
||||
alert(" Le participant a été correctement ajouté");
|
||||
setaddOneParticipant("0");
|
||||
setreduction_session("1");
|
||||
GetListePreinscrit(mysession);
|
||||
|
@ -4381,6 +4380,8 @@ function GestionAdministrative(props) {
|
|||
GetListeEmargement(mysession);
|
||||
GetListeEvaluation(mysession);
|
||||
submenu_inscrit();
|
||||
alert(" Le participant a été correctement ajouté");
|
||||
myRef_detail_inscrit.current.scrollIntoView({ behavior: "smooth" });
|
||||
|
||||
} else if (String(res.data.status) === String("Err_Connexion")) {
|
||||
alert('Erreur: ' + res.data.message);
|
||||
|
@ -4477,6 +4478,9 @@ function GestionAdministrative(props) {
|
|||
const [isimgclassSelectedfile, setisimgclassSelectedfile] = useState(false);
|
||||
|
||||
|
||||
const myRef_detail_inscrit = useRef(null)
|
||||
|
||||
|
||||
const [userimgclassprofil, setuserimgclassprofil] = useState();
|
||||
const [userimgclassprofilchanged, setuserimgclassprofilchanged] = useState("");
|
||||
|
||||
|
@ -4650,7 +4654,7 @@ function GestionAdministrative(props) {
|
|||
if (String(result['status']) === String("true")) {
|
||||
setrecord_Stagiaire_Image_api("true");
|
||||
setuserimgclassprofilchanged("");
|
||||
alert(" L'image à jour a été mise enregistrée ");
|
||||
alert(" L'image a été enregistrée ");
|
||||
|
||||
} else if (String(result['status']) === String("Err_Connexion")) {
|
||||
alert('Erreur: ' + result['message']);
|
||||
|
@ -5987,7 +5991,7 @@ function GestionAdministrative(props) {
|
|||
|
||||
|
||||
|
||||
<div style={{ "textAlign": "left", "float": "left", "width": "100%" }} id="participant_menu_tab">
|
||||
<div style={{ "textAlign": "left", "float": "left", "width": "100%" }} id="participant_menu_tab" ref={myRef_detail_inscrit}>
|
||||
<Button variant="outlined" onClick={submenu_preinscrit} className="detail_class_submenu" id='menu_preinscrit' name='menu_preinscrit'>Preinscription ({String(nb_stagiaire_Preinscrit)})</Button>
|
||||
<Button variant="outlined" onClick={submenu_inscrit} className="detail_class_submenu" id='menu_inscrit' name='menu_inscrit'>Inscription ({String(nb_stagiaire_Inscrit)})</Button>
|
||||
<Button variant="outlined" onClick={submenu_emargement} className="detail_class_submenu" id='menu_emarge' name='menu_emarge'>Liste émargement</Button>
|
||||
|
@ -6614,7 +6618,7 @@ function GestionAdministrative(props) {
|
|||
className="disabled_style enable_style"
|
||||
>
|
||||
{status_inscription.map((option) => (
|
||||
<MenuItem key={option.value} value={option.value}>
|
||||
<MenuItem key={option.value} value={option.value} style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>
|
||||
{option.label} <br />
|
||||
</MenuItem>
|
||||
))}
|
||||
|
|
|
@ -67,12 +67,12 @@ const Materiels = (props) => {
|
|||
const columns = [
|
||||
{ field: '_id', headerName: '_id', hide: true },
|
||||
{ field: 'id', headerName: 'id', hide: true },
|
||||
{ field: 'ref_interne', headerName: 'Ref. Interne', width: 150, hideable: false, },
|
||||
{ field: 'nom', headerName: 'Nom', width: 150, hide: false, editable: true },
|
||||
{ field: 'famille', headerName: 'Famille', width: 150, hide: false, editable: true },
|
||||
{ field: 'marque', headerName: 'Marque', width: 150, hide: false, editable: true },
|
||||
{ field: 'type', headerName: 'Type', width: 150, hide: false, editable: true },
|
||||
{ field: 'fournisseur', headerName: 'Fournisseur', width: 150, hide: false, editable: true },
|
||||
{ field: 'ref_interne', headerName: 'Ref. Interne', flex: 1, hideable: false, },
|
||||
{ field: 'nom', headerName: 'Nom', flex: 1, hide: false, },
|
||||
{ field: 'famille', headerName: 'Famille', flex: 1, hide: false, },
|
||||
{ field: 'marque', headerName: 'Marque', flex: 1, hide: false, },
|
||||
{ field: 'type', headerName: 'Type', width: 150, hide: false, },
|
||||
{ field: 'fournisseur', headerName: 'Fournisseur', flex: 1, hide: false, },
|
||||
{
|
||||
field: "delete", headerName: 'Supprimer',
|
||||
renderCell: (cellValues) => {
|
||||
|
@ -139,11 +139,11 @@ const Materiels = (props) => {
|
|||
const columns_materielle_affectation = [
|
||||
{ field: '_id', headerName: '_id', hide: true },
|
||||
{ field: 'id', headerName: 'id', hide: true },
|
||||
{ field: 'poste', headerName: 'Poste', width: 150, hideable: false, },
|
||||
{ field: 'date_du', headerName: 'Du', width: 150, hide: false, editable: true },
|
||||
{ field: 'date_au', headerName: 'Au', width: 150, hide: false, editable: true },
|
||||
{ field: 'related_target_collection_object', headerName: 'Cible', width: 150, hide: false, editable: true },
|
||||
{ field: 'related_target_collection_id_nom', headerName: 'Cible Nom', width: 150, hide: false, editable: true },
|
||||
{ field: 'poste', headerName: 'Poste', flex: 1, hideable: false, },
|
||||
{ field: 'date_du', headerName: 'Du', width: 150, hide: false, },
|
||||
{ field: 'date_au', headerName: 'Au', width: 150, hide: false, },
|
||||
{ field: 'related_target_collection_object', headerName: 'Cible', flex: 1, hide: false, },
|
||||
{ field: 'related_target_collection_id_nom', headerName: 'Cible Nom', flex: 1, hide: false, },
|
||||
{ field: 'target_related_collection', headerName: 'Type', hide: true },
|
||||
{ field: 'target_related_collection_id', headerName: 'Type ID', hide: true },
|
||||
{
|
||||
|
@ -652,6 +652,13 @@ const Materiels = (props) => {
|
|||
if (String(materiel_data_edit_mode) !== "1")
|
||||
disable_Materiel_DetailFields();
|
||||
|
||||
|
||||
setSelectionModel_affectations([]);
|
||||
setdisplay_affectation("0");
|
||||
setAdd_new_affectation("");
|
||||
clean_affectation_fields();
|
||||
clean_nouvelle_affectation_fields();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -1146,14 +1153,14 @@ const Materiels = (props) => {
|
|||
if (String(result['status']) === String("true")) {
|
||||
setrecord_materiel_Image_api("true");
|
||||
setuserimgclassprofilchanged("");
|
||||
alert(" L'image à jour a été mise enregistrée ");
|
||||
alert(" L'image a été enregistrée ");
|
||||
|
||||
} else if (String(result['status']) === String("Err_Connexion")) {
|
||||
alert('Erreur: ' + result['message']);
|
||||
history.push("/Connexion");
|
||||
} else {
|
||||
setrecord_materiel_Image_api("false");
|
||||
alert(" Erreur : " + result['message']);
|
||||
alert(result['message']);
|
||||
}
|
||||
|
||||
})
|
||||
|
@ -1253,7 +1260,9 @@ const Materiels = (props) => {
|
|||
|
||||
setsubmenu("detail_materiel");
|
||||
setadd_One_Materiel("");
|
||||
Get_Materiel_Data(selected_id);
|
||||
//Get_Materiel_Data(selected_id);
|
||||
Display_Detail_Material_Data(selected_id);
|
||||
|
||||
if (myRef_head)
|
||||
myRef_head.current.scrollIntoView({ behavior: "smooth" });
|
||||
|
||||
|
@ -2438,16 +2447,15 @@ const Materiels = (props) => {
|
|||
</div>
|
||||
</div>
|
||||
<div className="div_row"> </div>
|
||||
<div className="div_row">
|
||||
<Button variant="outlined" ref={myRef} onClick={submenu_detail_materiel} className="detail_class_submenu" id='detail_materiel' name='detail_materiel'>Détail Materiel</Button>
|
||||
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{String(submenu) === "detail_materiel" && String(add_One_Materiel) !== "1" && <div className="div_row">
|
||||
<div className="div_row">
|
||||
<Button variant="outlined" ref={myRef} onClick={submenu_detail_materiel} className="detail_class_submenu" id='detail_materiel' name='detail_materiel'>Détail Materiel</Button>
|
||||
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
|
||||
</div>
|
||||
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Détail Materiel </nav>
|
||||
<div className="div_row" style={{ "border": "None" }}>
|
||||
<div className="div_row_gauche">
|
||||
|
@ -2764,6 +2772,10 @@ const Materiels = (props) => {
|
|||
|
||||
|
||||
{String(submenu) === "detail_materiel" && String(add_One_Materiel) === "1" && <div className="div_row">
|
||||
<div className="div_row">
|
||||
<Button variant="outlined" ref={myRef} onClick={submenu_detail_materiel} className="detail_class_submenu" id='detail_materiel' name='detail_materiel'>Détail Materiel</Button>
|
||||
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
|
||||
</div>
|
||||
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Ajouter un nouveau materiel </nav>
|
||||
<div className="session_data" >
|
||||
<div className="session_caract"> Ref. Interne<br />
|
||||
|
@ -3014,6 +3026,10 @@ const Materiels = (props) => {
|
|||
</div>}
|
||||
|
||||
{String(submenu) === "affectation" && <div className="div_row">
|
||||
<div className="div_row">
|
||||
<Button variant="outlined" ref={myRef} onClick={submenu_detail_materiel} className="detail_class_submenu" id='detail_materiel' name='detail_materiel'>Détail Materiel</Button>
|
||||
<Button variant="outlined" onClick={submenu_affectation} className="detail_class_submenu" id='affectation' name='affectation'>Affectation </Button>
|
||||
</div>
|
||||
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Affectation </nav>
|
||||
<div className="session_data">
|
||||
<div style={{ "border": "None" }}>
|
||||
|
|
|
@ -293,12 +293,16 @@ const PartnerClientActivite = (props) => {
|
|||
setrecordPartnerClient_Activite_Data_api("true");
|
||||
setrecordPartnerClient_Activite_Data_result(res.data.message);
|
||||
|
||||
setshowactivite_detail("0");
|
||||
Get_List_Activite_Of_client_Part();
|
||||
alert(res.data.message);
|
||||
setdatamodification_activite("0");
|
||||
setformedit_mode_activite("0");
|
||||
setcurrent_activite_recid("");
|
||||
|
||||
|
||||
setshow_all_activite_list("1");
|
||||
setshowactivite_detail('0');
|
||||
setadd_one_activite('0');
|
||||
alert(res.data.message);
|
||||
}
|
||||
|
||||
else if (String(res.data.status) === String("Err_Connexion")) {
|
||||
|
@ -728,6 +732,7 @@ const PartnerClientActivite = (props) => {
|
|||
</div>}
|
||||
{String(showactivite_detail) === "1" && <div className="div_row" style={{ "marginLeft": "5px", "marginRight": "5px" }} onChange={DataUpdated_Activite_Data}>
|
||||
<div className="training_caract">
|
||||
<nav style={{ "fontSize": "11px" }}> </nav>
|
||||
<TextField
|
||||
required
|
||||
name="activite_description"
|
||||
|
@ -766,6 +771,8 @@ const PartnerClientActivite = (props) => {
|
|||
</div>}
|
||||
|
||||
{String(formedit_mode_activite) === "0" && <div className="training_caract">
|
||||
|
||||
<nav style={{ "fontSize": "11px" }}> </nav>
|
||||
<TextField
|
||||
required
|
||||
name="activite_deadline"
|
||||
|
@ -775,7 +782,7 @@ const PartnerClientActivite = (props) => {
|
|||
}}
|
||||
disabled={false}
|
||||
className="disabled_style"
|
||||
value={setp_activite_deadline_label}
|
||||
value={p_activite_deadline_label}
|
||||
/>
|
||||
|
||||
</div>}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useState, useEffect } from "react";
|
||||
import React, { useRef, useState, useEffect } from "react";
|
||||
import axios from "axios";
|
||||
import partnerbannerimg from "../mysy_img/MYSY_banner_compte.png";
|
||||
import profileimg from "../mysy_img/MYSY-profil-2.png";
|
||||
|
@ -41,15 +41,20 @@ import {
|
|||
import { DataGrid, GridToolbar, frFR, GridCellParams } from '@mui/x-data-grid';
|
||||
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint, FcDeleteDatabase } from "react-icons/fc";
|
||||
import { darken, lighten, styled } from '@mui/material/styles';
|
||||
import 'react-tooltip/dist/react-tooltip.css'
|
||||
import { Tooltip } from 'react-tooltip'
|
||||
|
||||
import AddParnerClient from "./AddPartnerClient";
|
||||
//import { FcHome} from "react-icons/fc";
|
||||
import { alpha } from '@mui/material/styles';
|
||||
import { gridClasses } from '@mui/x-data-grid';
|
||||
import { AiOutlineUserAdd } from "react-icons/ai";
|
||||
|
||||
|
||||
|
||||
import TextField from '@mui/material/TextField';
|
||||
import MenuItem from '@mui/material/MenuItem';
|
||||
import InputAdornment from '@mui/material/InputAdornment';
|
||||
import { AiFillCloseCircle } from "react-icons/ai";
|
||||
import { CiTrash } from "react-icons/ci";
|
||||
import { MdAddCircleOutline, MdRemoveCircleOutline } from "react-icons/md";
|
||||
|
||||
const Partner_Client = (props) => {
|
||||
|
||||
|
@ -280,72 +285,203 @@ const Partner_Client = (props) => {
|
|||
var clientmail = String(line.email);
|
||||
setClient_email(clientmail);
|
||||
setEdite_Client("1");
|
||||
if (myRef_detail_client.current) {
|
||||
myRef_detail_client.current.scrollIntoView({ behavior: "smooth" });
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const [p_filtre1, setp_filtre1] = useState();
|
||||
const [p_filtre1_value, setp_filtre1_value] = useState();
|
||||
|
||||
const [p_filtre2, setp_filtre2] = useState();
|
||||
const [p_filtre2_value, setp_filtre2_value] = useState();
|
||||
|
||||
|
||||
function clean_all_filters() {
|
||||
setp_filtre1();
|
||||
setp_filtre1_value();
|
||||
setp_filtre2();
|
||||
setp_filtre2_value();
|
||||
|
||||
|
||||
}
|
||||
|
||||
const myRef_detail_client = useRef(null)
|
||||
return (
|
||||
|
||||
<div className="partner_client">
|
||||
|
||||
<div className="div_row">
|
||||
|
||||
{String(Edite_Client) === "1" && <div className="div_row">
|
||||
|
||||
<div className="titre1"> Detail client : {Client_email}</div>
|
||||
<h3> Vos clients</h3>
|
||||
|
||||
<AddParnerClient client_mail={Client_email} close_detail_client={close_detail_client} />
|
||||
|
||||
</div>}
|
||||
|
||||
{String(Edite_Client) === "2" && <div className="div_row">
|
||||
|
||||
<div className="titre1"> Detail client : {Client_email}</div>
|
||||
|
||||
<AddParnerClient client_mail={Client_email} close_detail_client={close_detail_client} new_customer="1"
|
||||
Get_List_Partner_Clients={Get_List_Partner_Clients} />
|
||||
|
||||
</div>}
|
||||
|
||||
|
||||
<div className="titre1"> Liste des clients</div>
|
||||
|
||||
<div className="div_row">
|
||||
<div style={{ height: "500px", width: '100%' }}>
|
||||
<div className="div_row">
|
||||
|
||||
<Button variant="outlined" onClick={submenu_import_part_client_mass} className="detail_class_submenu bton_add_menuclient" style={{
|
||||
"background": "#c8cfd5",
|
||||
"color": "black", "width": "auto"
|
||||
<div className="titre1"> Utilisez les filtres !</div>
|
||||
<div>
|
||||
<div className="div_row" style={{ "marginBottom": "5px" }}>
|
||||
<div className="div_row_gauche texte_area_filter" >
|
||||
<TextField
|
||||
name="filtre1"
|
||||
label="Choisir un champ"
|
||||
select
|
||||
sx={{ m: 1, width: '100%' }}
|
||||
value={p_filtre1}
|
||||
onChange={(e) => {
|
||||
setp_filtre1(e.target.value)
|
||||
}}
|
||||
id='menu_import_participant' name='menu_import_participant'>Choisir un fichier et Importer
|
||||
<img src={excel_icone} alt="ajout csv" className="icon_excel" />
|
||||
</Button>
|
||||
>
|
||||
|
||||
<Button variant="outlined" onClick={handleClick_add_new_client}
|
||||
className="detail_class_submenu bton_add_menuclient"
|
||||
id='menu_one_participant' name='menu_one_participant'><img src={participants} alt="ajout un client" className="icon_plus" />
|
||||
Ajouter 1 Client
|
||||
<MenuItem value="nom_client" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Nom </MenuItem>
|
||||
<MenuItem value="email_client" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Email </MenuItem>
|
||||
|
||||
</Button>
|
||||
</TextField>
|
||||
</div>
|
||||
|
||||
<br />
|
||||
<a href='/sample/template_import_client.csv' download>Télécharger un fichier modèle</a>
|
||||
<br />
|
||||
|
||||
<i>{part_client_file_name}</i><br />
|
||||
{String(liste_part_client_file_change_api) === String("true") && <nav className="okUpdateData"> Les client ont été correctement importés</nav>}
|
||||
{String(liste_part_client_file_change_api) === String("false") && <nav className="koUpdateData"> {liste_part_client_file_change_message} </nav>}
|
||||
|
||||
<input type="file"
|
||||
accept=".csv"
|
||||
ref={hiddenFileInput}
|
||||
style={{ display: 'none' }}
|
||||
name="liste_participants_file"
|
||||
onChange={liste_part_client_file_change}
|
||||
<div className="div_row_droite texte_area_filter_value" >
|
||||
{p_filtre1 &&
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
name="filtre1_value"
|
||||
id="filtre1_value"
|
||||
|
||||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
disabled={false}
|
||||
className="disabled_style"
|
||||
value={p_filtre1_value}
|
||||
onChange={(e) => { setp_filtre1_value(e.target.value); }}
|
||||
InputProps={{
|
||||
endAdornment: (
|
||||
<InputAdornment position="end">
|
||||
<AiFillCloseCircle
|
||||
style={{ 'cursor': "pointer", "color": "orangered" }}
|
||||
onClick={(e) => {
|
||||
setp_filtre1_value("");
|
||||
}} />
|
||||
</InputAdornment>
|
||||
),
|
||||
}}
|
||||
|
||||
/>
|
||||
|
||||
}
|
||||
</div>
|
||||
{p_filtre1 && <div className='filter_bton_add'>
|
||||
<Tooltip id="my-tooltip01" style={{ "fontSize": "12px" }} />
|
||||
<a data-tooltip-id="my-tooltip01" data-tooltip-content="Ajouter une nouvelle ligne de filtre">
|
||||
<MdAddCircleOutline onClick={(e) => {
|
||||
setp_filtre2("1");
|
||||
}} />
|
||||
</a>
|
||||
</div>}
|
||||
{p_filtre1 && <div className='filter_bton_add'>
|
||||
<Tooltip id="my-tooltip02" style={{ "fontSize": "12px" }} />
|
||||
<a data-tooltip-id="my-tooltip02" data-tooltip-content="Supprimer cette ligne de filtre">
|
||||
<MdRemoveCircleOutline onClick={(e) => {
|
||||
setp_filtre1();
|
||||
setp_filtre1_value();
|
||||
}}
|
||||
/>
|
||||
</a>
|
||||
</div>}
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
{p_filtre2 &&
|
||||
<div className="div_row" style={{ "marginBottom": "5px" }}>
|
||||
<div className="div_row_gauche texte_area_filter">
|
||||
<TextField
|
||||
name="filtre2"
|
||||
label="Choisir un champ"
|
||||
select
|
||||
sx={{ m: 1, width: '100%' }}
|
||||
value={p_filtre2}
|
||||
onChange={(e) => {
|
||||
setp_filtre2(e.target.value)
|
||||
}}
|
||||
>
|
||||
|
||||
<MenuItem value="nom_client" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Nom </MenuItem>
|
||||
<MenuItem value="email_client" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Email </MenuItem>
|
||||
|
||||
</TextField>
|
||||
</div>
|
||||
<div className="div_row_droite texte_area_filter" >
|
||||
{String(p_filtre2).length > 3 &&
|
||||
<TextField
|
||||
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
||||
required
|
||||
name="filtre2_value"
|
||||
id="filtre2_value"
|
||||
|
||||
InputLabelProps={{
|
||||
shrink: true,
|
||||
}}
|
||||
disabled={false}
|
||||
className="disabled_style"
|
||||
value={p_filtre2_value}
|
||||
onChange={(e) => setp_filtre2_value(e.target.value)}
|
||||
InputProps={{
|
||||
endAdornment: (
|
||||
<InputAdornment position="end">
|
||||
<AiFillCloseCircle
|
||||
style={{ 'cursor': "pointer", "color": "orangered" }}
|
||||
onClick={(e) => {
|
||||
setp_filtre2_value("");
|
||||
}} />
|
||||
</InputAdornment>
|
||||
),
|
||||
}}
|
||||
|
||||
/>}
|
||||
</div>
|
||||
|
||||
|
||||
{String(p_filtre2).length > 3 && <div className='filter_bton_add'>
|
||||
<Tooltip id="my-tooltip04" style={{ "fontSize": "12px" }} />
|
||||
<a data-tooltip-id="my-tooltip04" data-tooltip-content="Supprimer cette ligne de filtre">
|
||||
<MdRemoveCircleOutline
|
||||
onClick={(e) => {
|
||||
setp_filtre2();
|
||||
setp_filtre2_value();
|
||||
}}
|
||||
/>
|
||||
</a>
|
||||
</div>}
|
||||
</div>
|
||||
}
|
||||
|
||||
|
||||
{<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
|
||||
|
||||
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
|
||||
<Button variant="contained" className="bton_enreg" onClick={Get_List_Partner_Clients}>Rechercher
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}>
|
||||
<Button variant="contained" className="bton_annule" onClick={clean_all_filters}>Annuler
|
||||
</Button>
|
||||
|
||||
</div>
|
||||
|
||||
</div>}
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div className="div_row">
|
||||
<div style={{ height: 550, width: '100%', paddingRight: '1px' }}>
|
||||
|
||||
|
||||
<Box
|
||||
sx={{
|
||||
|
@ -403,28 +539,57 @@ const Partner_Client = (props) => {
|
|||
</div>
|
||||
|
||||
|
||||
{/*<div className="titre1"> Grid des clients</div>
|
||||
<div className="div_row" style={{ "marginLeft": "5px", "marginRight": "5px" }}>
|
||||
<div className="client_grid">
|
||||
|
||||
{Get_List_Partner_Clients_result && String(Get_List_Partner_Clients_api) === "true" &&
|
||||
Get_List_Partner_Clients_result.map((client) => (
|
||||
<div className="div_row" ref={myRef_detail_client}>
|
||||
|
||||
<div>
|
||||
mail = {String(JSON.parse(client).email)} <br />
|
||||
nom = {String(JSON.parse(client).nom)} <br />
|
||||
Tel = {String(JSON.parse(client).telephone)} <br />
|
||||
Adresse = {String(JSON.parse(client).adr_adresse)} - {String(JSON.parse(client).adr_ville)} <br />
|
||||
<Button variant="outlined" onClick={submenu_import_part_client_mass} className="detail_class_submenu bton_import_excel"
|
||||
id='menu_import_participant' name='menu_import_participant'>Choisir un fichier et Importer
|
||||
<img src={excel_icone} alt="ajout csv" className="icon_excel" />
|
||||
</Button>
|
||||
|
||||
<Button variant="outlined" onClick={handleClick_add_new_client}
|
||||
className="detail_class_submenu bton_add_session"
|
||||
id='menu_one_participant' name='menu_one_participant'><img src={participants} alt="ajout un client" className="icon_plus" />
|
||||
Ajouter 1 Client
|
||||
|
||||
</Button>
|
||||
|
||||
<br />
|
||||
<a href='/sample/template_import_client.csv' download>Télécharger un fichier modèle</a>
|
||||
<br />
|
||||
|
||||
<i>{part_client_file_name}</i><br />
|
||||
{String(liste_part_client_file_change_api) === String("true") && <nav className="okUpdateData"> Les client ont été correctement importés</nav>}
|
||||
{String(liste_part_client_file_change_api) === String("false") && <nav className="koUpdateData"> {liste_part_client_file_change_message} </nav>}
|
||||
|
||||
<input type="file"
|
||||
accept=".csv"
|
||||
ref={hiddenFileInput}
|
||||
style={{ display: 'none' }}
|
||||
name="liste_participants_file"
|
||||
onChange={liste_part_client_file_change}
|
||||
/>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
*/}
|
||||
{String(Edite_Client) === "1" && <div className="div_row">
|
||||
|
||||
</div>
|
||||
<div className="titre1"> Detail client : {Client_email}</div>
|
||||
|
||||
<AddParnerClient client_mail={Client_email} close_detail_client={close_detail_client} />
|
||||
|
||||
</div>}
|
||||
|
||||
{String(Edite_Client) === "2" && <div className="div_row">
|
||||
|
||||
<div className="titre1"> Detail client : {Client_email}</div>
|
||||
|
||||
<AddParnerClient client_mail={Client_email} close_detail_client={close_detail_client} new_customer="1"
|
||||
Get_List_Partner_Clients={Get_List_Partner_Clients} />
|
||||
|
||||
</div>}
|
||||
|
||||
|
||||
</div>
|
||||
|
|
|
@ -1053,7 +1053,7 @@
|
|||
|
||||
.scroll_mysy {
|
||||
overflow-y: auto;
|
||||
max-height: 20rem;
|
||||
height: 30rem;
|
||||
overflow-y: visible;
|
||||
overflow-y: scroll;
|
||||
padding-right: 1rem !important;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue