This commit is contained in:
KONE SOREL 2026-01-13 14:18:22 +00:00
parent 5c930f2151
commit 56911b2589
5 changed files with 193 additions and 3 deletions

View File

@ -0,0 +1,20 @@
<?php
require_once 'Framework/Controleur.php';
require_once 'Modele/Police.php';
class ControleurAjaxlisterpolicesclient extends Controleur {
private $police;
public function __construct()
{
$this->police = new Police();
}
public function index()
{
$vue = $this->requete->getParametreFormulaire("vue");
$polices = $this->police->getPoliceRh();
$this->genererVueAjax(array('vue' => $vue, 'polices' => $polices));
}
}

View File

@ -4130,3 +4130,88 @@ function consulterfactureged_pop()
}
});
}
function lister_polices_client(id) {
const vues = {
1: "Rechercherassure",
2: "Syntheseconsopolice",
3: "Sppolice"
};
vue = vues[id] || null; // null si id ne correspond à rien
const modalEl = document.getElementById('pop_police');
// On déplace le modal directement sous <body> s'il n'y est pas déjà.
// Cela permet de passer outre les z-index des conteneurs parents (Sidebar, Header).
if (modalEl.parentElement !== document.body) {
document.body.appendChild(modalEl);
}
const racine = $("#racineWeb").val() || "/";
const divPolice = document.getElementById('div_police');
/* ===================================================
* Préparation visuelle (Spinner)
* =================================================== */
showLoader("#div_police", { size: 3 });
/* ===================================================
* Initialisation de l'instance Bootstrap
* =================================================== */
const modal = bootstrap.Modal.getOrCreateInstance(modalEl, {
backdrop: 'static',
keyboard: false
});
/* ===================================================
* Gestion de l'événement d'affichage et AJAX
* =================================================== */
// On utilise 'shown.bs.modal' pour lancer l'AJAX une fois le modal visible
$(modalEl).one('shown.bs.modal', function () {
$.ajax({
url: racine + "Ajaxlisterpolicesclient/",
type: 'POST',
data: { vue: vue },
success: function (data) {
divPolice.innerHTML = data;
},
error: function (xhr, status, error) {
divPolice.innerHTML = `
<div class="alert alert-danger m-3 shadow-sm">
<strong>Erreur :</strong> Impossible de générer la liste des polices.
<small class="d-block text-muted mt-1">${error}</small>
</div>
`;
}
});
});
/* ===================================================
* 6. Affichage final
* =================================================== */
modal.show();
}
function ajax_contexter_police(){
idPolice = $("#idPolice").val();
donnees = 'idPolice='+idPolice;
$.ajax({
url: $("#racineWeb").val()+"Ajaxcontextpolice/",
type : 'post',
data: donnees,
error: function(errorData) {
},
complete: function() {
}
});
}
function ouvrir_vue(vue)
{
window.location.assign($("#racineWeb" ).val()+vue+"/");
}

View File

@ -0,0 +1,63 @@
<div id="div_police" class="p-3 bg-white rounded shadow-sm border">
<div class="row g-3 align-items-end">
<div class="col-md-7">
<label for="idPolice" class="form-label extra-small fw-bold text-muted text-uppercase mb-2">
<i class="fa-solid fa-circle-dot text-primary me-1"></i><?= _("Police d'Assurance cible") ?>
</label>
<div class="input-group border rounded-3 overflow-hidden shadow-sm transition-focus">
<span class="input-group-text bg-light border-0">
<i class="fa-solid fa-file-contract text-primary"></i>
</span>
<select class="form-select border-0 fw-bold text-dark"
id="idPolice"
name="idPolice"
required
onchange="javascript:ajax_contexter_police();"
style="font-size: 10pt; height: 45px;">
<?php liste_options($polices, "", false); ?>
</select>
</div>
</div>
<div class="col-md-5">
<button type="button"
class="btn btn-primary w-100 fw-bold shadow-sm d-flex align-items-center justify-content-center hover-lift"
onclick="javascript:ouvrir_vue('<?= $vue; ?>');"
style="height: 45px; border-radius: 8px;">
<i class="fas fa-external-link-alt me-2"></i>
<span><?= _("Accéder au module") ?></span>
</button>
</div>
</div>
</div>
<style>
.extra-small { font-size: 0.7rem; }
/* Animation de focus sur l'input group */
.transition-focus {
transition: all 0.2s ease-in-out;
border: 1px solid #dee2e6 !important;
}
.transition-focus:focus-within {
border-color: #0d6efd !important;
box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.15) !important;
}
/* Effet au survol du bouton */
.hover-lift {
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.hover-lift:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(13, 110, 253, 0.3) !important;
}
/* Style du select pour éviter le contour bleu par défaut de Bootstrap */
.form-select:focus {
box-shadow: none;
}
</style>

View File

@ -11,12 +11,11 @@
<div class="card border-0 shadow-sm rounded-0 rounded-bottom mb-4">
<div class="card-body bg-light border-bottom">
<div class="row g-3">
<div class="col-md-4">
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Police d'Assurance") ?></label>
<div class="input-group shadow-sm">
<span class="input-group-text bg-white"><i class="fa-solid fa-file-contract text-primary"></i></span>
<select class="form-control selectpicker shadow-none" data-live-search="true" id="idPolice" name="idPolice" required>
<select class="form-select shadow-none" id="idPolice" name="idPolice" required>
<?php liste_options($polices, "", false); ?>
</select>
</div>

View File

@ -594,6 +594,29 @@ $photoAssureCrypte = $_SESSION['photoAssureCrypte'];
</div>
</div>
<!--<button class="d-none" id="btn_police" data-bs-toggle="modal" data-bs-target="#pop_police"></button>-->
<!-- Polices Modal -->
<div class="modal fade" id="pop_police" role="dialog">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-bs-dismiss="modal"> <?= _("Fermer") ?> </button>
<h4 class="modal-title"> <?= _("Sélectionner une police") ?> </h4>
</div>
<div class="modal-body">
<div id="div_police">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-bs-dismiss="modal"> <?= _("Fermer") ?> </button>
</div>
</div>
</div>
</div>
<div id="div_ajaxgabarit">
</div>
@ -639,7 +662,7 @@ $photoAssureCrypte = $_SESSION['photoAssureCrypte'];
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<!-- Application Scripts -->
<script src="/Js/fonctions.js?ver=2026.01.12.03"></script>
<script src="/Js/fonctions.js?ver=2026.01.13.00"></script>
<script type="text/javascript">
raffraichier_gabarit();