feat : add chat in facturas,presupuestos y pedidos

This commit is contained in:
Alvaro Mazuecos Nogales
2024-09-23 10:00:47 +02:00
parent 766347ad81
commit d6a95f78ee
11 changed files with 394 additions and 254 deletions

View File

@ -1,19 +1,20 @@
<div class="accordion accordion-bordered mt-3" id="accordionChatFactura"> <div class="accordion accordion-bordered mt-3" id="accordionChatFactura">
<div class="card accordion-item active"> <div class="card accordion-item active">
<h2 class="accordion-header" id="headingChatFactura"> <h2 class="accordion-header" id="headingChatFactura">
<button type="button" class="accordion-button" data-bs-toggle="collapse" data-bs-target="#accordionChatFacturaTip" aria-expanded="false" aria-controls="accordionAlbaranesTip"> <button type="button" class="accordion-button" data-bs-toggle="collapse"
data-bs-target="#accordionChatFacturaTip" aria-expanded="false" aria-controls="accordionChatFacturaTip">
<h3><?= lang("Chat.chat") ?></h3> <h3><?= lang("Chat.chat") ?></h3>
</button> </button>
</h2> </h2>
<div id="accordionChatFacturaTip" class="accordion-collapse collapse show" data-bs-parent="#accordionChatPresupuesto"> <div id="accordionChatFacturaTip" class="accordion-collapse collapse show"
data-bs-parent="#accordionChatFactura">
<div class="accordion-body"> <div class="accordion-body">
<div class="container-xxl flex-grow-1 container-p-y" id="chat-presupuesto" data-id="<?= $facturaId ?>"> <div class="container-xxl flex-grow-1 container-p-y" id="chat-factura" data-id="<?= $modelId ?>">
<div class="app-chat card overflow-hidden"> <div class="app-chat card overflow-hidden">
<div class="row g-0"> <div class="row g-0">
<!-- Chat & Contacts --> <!-- Chat & Contacts -->
<div <div class="col app-chat-contacts app-sidebar flex-grow-0 overflow-hidden border-end"
class="col app-chat-contacts app-sidebar flex-grow-0 overflow-hidden border-end"
id="app-chat-contacts"> id="app-chat-contacts">
<div class="sidebar-header"> <div class="sidebar-header">
<div class="d-flex align-items-center me-3 me-lg-0"> <div class="d-flex align-items-center me-3 me-lg-0">
@ -25,19 +26,13 @@
<span class="input-group-text" id="basic-addon-search31"> <span class="input-group-text" id="basic-addon-search31">
<i class="ti ti-search"></i> <i class="ti ti-search"></i>
</span> </span>
<input <input type="text" class="form-control chat-search-input"
type="text" placeholder="Buscar..." aria-label="Buscar..."
class="form-control chat-search-input"
placeholder="Buscar..."
aria-label="Buscar..."
aria-describedby="basic-addon-search31" /> aria-describedby="basic-addon-search31" />
</div> </div>
</div> </div>
<i <i class="ti ti-x cursor-pointer d-lg-none d-block position-absolute mt-2 me-1 top-0 end-0"
class="ti ti-x cursor-pointer d-lg-none d-block position-absolute mt-2 me-1 top-0 end-0" data-overlay data-bs-toggle="sidebar" data-target="#app-chat-contacts"></i>
data-overlay
data-bs-toggle="sidebar"
data-target="#app-chat-contacts"></i>
</div> </div>
<hr class="container-m-nx m-0" /> <hr class="container-m-nx m-0" />
<div class="sidebar-body"> <div class="sidebar-body">
@ -54,22 +49,12 @@
</ul> </ul>
<!-- Contacts --> <!-- Contacts -->
<ul class="list-unstyled chat-contact-list mb-0" id="contact-list"> <ul class="list-unstyled chat-contact-list mb-0" id="contact-list">
<!-- <li class="chat-contact-list-item chat-contact-list-item-title"> <li class="chat-contact-list-item chat-contact-list-item-title">
<h5 class="text-primary mb-0">Contacts</h5> <h5 class="text-primary mb-0">Contacts</h5>
</li> </li>
<li class="chat-contact-list-item contact-list-item-0 "> <li class="chat-contact-list-item contact-list-item-0 d-none">
<h6 class="text-muted mb-0">No Contacts Found</h6> <h6 class="text-muted mb-0">No Contacts Found</h6>
</li> --> </li>
<!-- <li class="chat-contact-list-item">
<a class="d-flex align-items-center">
<div class="avatar d-block flex-shrink-0">
<span class="avatar-initial rounded-circle bg-label-primary">JJ</span>
</div>
<div class="chat-contact-info flex-grow-1 ms-2">
<h6 class="chat-contact-name text-truncate m-0">Jaime Jimenez</h6>
</div>
</a>
</li> -->
</ul> </ul>
</div> </div>
@ -82,33 +67,32 @@
<div class="chat-history-header border-bottom"> <div class="chat-history-header border-bottom">
<div class="d-flex justify-content-between align-items-center"> <div class="d-flex justify-content-between align-items-center">
<div class="d-flex overflow-hidden align-items-center"> <div class="d-flex overflow-hidden align-items-center">
<i <i class="ti ti-menu-2 ti-sm cursor-pointer d-lg-none d-block me-2"
class="ti ti-menu-2 ti-sm cursor-pointer d-lg-none d-block me-2" data-bs-toggle="sidebar" data-overlay
data-bs-toggle="sidebar"
data-overlay
data-target="#app-chat-contacts"></i> data-target="#app-chat-contacts"></i>
<div class="avatar d-block flex-shrink-0"> <div class="avatar d-block flex-shrink-0">
<span class="avatar-initial rounded-circle bg-label-primary">P</span> <span
class="avatar-initial rounded-circle bg-label-primary">P</span>
</div> </div>
<div class="chat-contact-info flex-grow-1 ms-2"> <div class="chat-contact-info flex-grow-1 ms-2">
<h6 class="m-0">Departamento Producción</h6> <h6 class="m-0">Departamento Producción</h6>
<small class="user-status text-muted">Consulta sobre el presupuesto P001</small> <small class="user-status text-muted">Consulta sobre el presupuesto
P001</small>
</div> </div>
</div> </div>
<div class="d-flex align-items-center"> <div class="d-flex align-items-center">
<div class="dropdown d-flex align-self-center"> <div class="dropdown d-flex align-self-center">
<button <button class="btn p-0" type="button" id="chat-header-actions"
class="btn p-0" data-bs-toggle="dropdown" aria-haspopup="true"
type="button"
id="chat-header-actions"
data-bs-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false"> aria-expanded="false">
<i class="ti ti-dots-vertical"></i> <i class="ti ti-dots-vertical"></i>
</button> </button>
<div class="dropdown-menu dropdown-menu-end" aria-labelledby="chat-header-actions"> <div class="dropdown-menu dropdown-menu-end d-none"
<a class="dropdown-item" href="javascript:void(0);">Silenciar Conversacion</a> aria-labelledby="chat-header-actions">
<a class="dropdown-item" href="javascript:void(0);">Limpiar Conversacion</a> <a class="dropdown-item" href="javascript:void(0);">Silenciar
Conversacion</a>
<a class="dropdown-item" href="javascript:void(0);">Limpiar
Conversacion</a>
</div> </div>
</div> </div>
</div> </div>
@ -122,15 +106,21 @@
</div> </div>
<!-- Chat message form --> <!-- Chat message form -->
<div class="chat-history-footer shadow-sm"> <div class="chat-history-footer shadow-sm">
<div class="form-send-message d-flex justify-content-between align-items-center"> <div
<input class="form-send-message d-flex justify-content-between align-items-center">
class="form-control message-input border-0 me-3 shadow-none" <input class="form-control message-input border-0 me-3 shadow-none"
placeholder="Type your message here" /> placeholder="Type your message here" />
<div class="message-actions d-flex align-items-center"> <div class="message-actions d-flex align-items-center">
<a class="btn btn-primary d-flex send-msg-btn "> <a class="btn btn-primary d-flex send-msg-btn" style="color:white"
id="send-msg-btn-deparment">
<i class="ti ti-send me-md-1 me-0"></i> <i class="ti ti-send me-md-1 me-0"></i>
<span class="align-middle d-md-inline-block d-none">Enviar</span> <span class="align-middle d-md-inline-block">Enviar</span>
</a>
<a class="btn btn-primary d-flex send-msg-btn"
id="send-msg-btn-internal">
<i class="ti ti-send me-md-1 me-0"></i>
<span class="align-middle d-md-inline-block ">Enviar</span>
</a> </a>
</div> </div>
</div> </div>
@ -155,7 +145,7 @@
<!-- Código JS logica --> <!-- Código JS logica -->
<!-------------------------------------------------------> <!------------------------------------------------------->
<?= $this->section("additionalExternalJs") ?> <?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/chatPresupuesto.js') ?>"></script> <script type="module" src="<?= site_url('assets/js/safekat/pages/chatFactura.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script> <script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
<!-- <script src="<?= site_url('js_loader/chat_js') ?>"></script> --> <!-- <script src="<?= site_url('js_loader/chat_js') ?>"></script> -->
<?= $this->endSection() ?> <?= $this->endSection() ?>

View File

@ -0,0 +1,152 @@
<div class="accordion accordion-bordered mt-3" id="accordionChatGeneral">
<div class="card accordion-item active">
<h2 class="accordion-header" id="headingChatGeneral">
<button type="button" class="accordion-button" data-bs-toggle="collapse"
data-bs-target="#accordionChatGeneralTip" aria-expanded="false" aria-controls="accordionChatGeneralTip">
<h3><?= lang("Chat.chat") ?></h3>
</button>
</h2>
<div id="accordionChatGeneralTip" class="accordion-collapse collapse show"
data-bs-parent="#accordionChatGeneral">
<div class="accordion-body">
<div class="container-xxl flex-grow-1 container-p-y" id="chat-general" data-id="<?= null ?>">
<div class="app-chat card overflow-hidden">
<div class="row g-0">
<!-- Chat & Contacts -->
<div class="col app-chat-contacts app-sidebar flex-grow-0 overflow-hidden border-end"
id="app-chat-contacts">
<div class="sidebar-header">
<div class="d-flex align-items-center me-3 me-lg-0">
<div class="flex-shrink-0 avatar me-3">
<span class="avatar-initial rounded-circle bg-label-success">U</span>
</div>
<div class="flex-grow-1 input-group input-group-merge rounded-pill">
<span class="input-group-text" id="basic-addon-search31">
<i class="ti ti-search"></i>
</span>
<input type="text" class="form-control chat-search-input"
placeholder="Buscar..." aria-label="Buscar..."
aria-describedby="basic-addon-search31" />
</div>
</div>
<i class="ti ti-x cursor-pointer d-lg-none d-block position-absolute mt-2 me-1 top-0 end-0"
data-overlay data-bs-toggle="sidebar" data-target="#app-chat-contacts"></i>
</div>
<hr class="container-m-nx m-0" />
<div class="sidebar-body">
<!-- Contacts -->
<ul class="list-unstyled chat-contact-list mb-0" id="contact-list">
<li class="chat-contact-list-item chat-contact-list-item-title">
<h5 class="text-primary mb-0">Contactos</h5>
</li>
<li class="chat-contact-list-item contact-list-item-0 ">
<h6 class="text-muted mb-0">No Contacts Found</h6>
</li>
<!-- <li class="chat-contact-list-item">
<a class="d-flex align-items-center">
<div class="avatar d-block flex-shrink-0">
<span class="avatar-initial rounded-circle bg-label-primary">JJ</span>
</div>
<div class="chat-contact-info flex-grow-1 ms-2">
<h6 class="chat-contact-name text-truncate m-0">Jaime Jimenez</h6>
</div>
</a>
</li> -->
</ul>
</div>
</div>
<!-- /Chat contacts -->
<!-- Chat History -->
<div class="col app-chat-history bg-body">
<div class="chat-history-wrapper ">
<div class="chat-history-header border-bottom">
<div class="d-flex justify-content-between align-items-center">
<div class="d-flex overflow-hidden align-items-center">
<i class="ti ti-menu-2 ti-sm cursor-pointer d-lg-none d-block me-2"
data-bs-toggle="sidebar" data-overlay
data-target="#app-chat-contacts"></i>
<div class="avatar d-block flex-shrink-0">
<span
class="avatar-initial rounded-circle bg-label-primary">P</span>
</div>
<div class="chat-contact-info flex-grow-1 ms-2">
<h6 class="m-0">Departamento Producción</h6>
<small class="user-status text-muted">Consulta sobre el presupuesto
P001</small>
</div>
</div>
<div class="d-flex align-items-center">
<div class="dropdown d-flex align-self-center">
<button class="btn p-0" type="button" id="chat-header-actions"
data-bs-toggle="dropdown" aria-haspopup="true"
aria-expanded="false">
<i class="ti ti-dots-vertical"></i>
</button>
<div class="dropdown-menu dropdown-menu-end"
aria-labelledby="chat-header-actions">
<a class="dropdown-item" href="javascript:void(0);">Silenciar
Conversacion</a>
<a class="dropdown-item" href="javascript:void(0);">Limpiar
Conversacion</a>
</div>
</div>
</div>
</div>
</div>
<div class="chat-history-body bg-body ">
<ul class="list-unstyled chat-history" id="chat-conversation">
</ul>
</div>
<!-- Chat message form -->
<div class="chat-history-footer shadow-sm">
<div
class="form-send-message d-flex justify-content-between align-items-center">
<input class="form-control message-input border-0 me-3 shadow-none"
placeholder="Type your message here" />
<div class="message-actions d-flex align-items-center">
<div class="message-actions d-flex align-items-center">
<a class="btn btn-primary d-flex send-msg-btn" style="color:white"
id="send-msg-btn-deparment">
<i class="ti ti-send me-md-1 me-0"></i>
<span class="align-middle d-md-inline-block">Enviar</span>
</a>
<a class="btn btn-primary d-flex send-msg-btn"
id="send-msg-btn-internal">
<i class="ti ti-send me-md-1 me-0"></i>
<span class="align-middle d-md-inline-block ">Enviar</span>
</a>
</div>
</div>
</div>
</div>
</div>
<!-- /Chat History -->
<div class="app-overlay"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<?= $this->section('css') ?>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/css/pages/app-chat.css') ?>">
<?= $this->endSection() ?>
<!------------------------------------------------------->
<!-- Código JS logica -->
<!------------------------------------------------------->
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/chatGeneral.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
<!-- <script src="<?= site_url('js_loader/chat_js') ?>"></script> -->
<?= $this->endSection() ?>

View File

@ -1,147 +1,134 @@
<div class="accordion accordion-bordered mt-3" id="accordionChatPedido"> <div class="accordion accordion-bordered mt-3" id="accordionChatPedido">
<div class="card accordion-item active"> <div class="card accordion-item active">
<h2 class="accordion-header" id="headingChatPedido"> <h2 class="accordion-header" id="headingChatPedido">
<button type="button" class="accordion-button" data-bs-toggle="collapse" data-bs-target="#accordionChatPedidoTip" aria-expanded="false" aria-controls="accordionAlbaranesTip"> <button type="button" class="accordion-button" data-bs-toggle="collapse"
data-bs-target="#accordionChatPedidoTip" aria-expanded="false" aria-controls="accordionChatPedidoTip">
<h3><?= lang("Chat.chat") ?></h3> <h3><?= lang("Chat.chat") ?></h3>
</button> </button>
</h2> </h2>
<div id="accordionChatPedidoTip" class="accordion-collapse collapse show" data-bs-parent="#accordionChatPedido"> <div id="accordionChatPedidoTip" class="accordion-collapse collapse show" data-bs-parent="#accordionChatPedido">
<div class="accordion-body"> <div class="accordion-body">
<div class="container-xxl flex-grow-1 container-p-y" id="chat-pedido" data-id="<?= $pedidoId ?>"> <div class="container-xxl flex-grow-1 container-p-y" id="chat-pedido" data-id="<?= $modelId ?>">
<div class="app-chat card overflow-hidden"> <div class="app-chat card overflow-hidden">
<div class="row g-0"> <div class="row g-0">
<!-- Chat & Contacts --> <!-- Chat & Contacts -->
<div <div class="col app-chat-contacts app-sidebar flex-grow-0 overflow-hidden border-end"
class="col app-chat-contacts app-sidebar flex-grow-0 overflow-hidden border-end" id="app-chat-contacts">
id="app-chat-contacts"> <div class="sidebar-header">
<div class="sidebar-header"> <div class="d-flex align-items-center me-3 me-lg-0">
<div class="d-flex align-items-center me-3 me-lg-0"> <div class="flex-shrink-0 avatar me-3">
<div class="flex-shrink-0 avatar me-3"> <span class="avatar-initial rounded-circle bg-label-success">U</span>
<span class="avatar-initial rounded-circle bg-label-success">U</span>
</div>
<div class="flex-grow-1 input-group input-group-merge rounded-pill">
<span class="input-group-text" id="basic-addon-search31">
<i class="ti ti-search"></i>
</span>
<input
type="text"
class="form-control chat-search-input"
placeholder="Buscar..."
aria-label="Buscar..."
aria-describedby="basic-addon-search31" />
</div>
</div> </div>
<i
class="ti ti-x cursor-pointer d-lg-none d-block position-absolute mt-2 me-1 top-0 end-0"
data-overlay
data-bs-toggle="sidebar"
data-target="#app-chat-contacts"></i>
</div>
<hr class="container-m-nx m-0" />
<div class="sidebar-body">
<div class="chat-contact-list-item-title">
<h5 class="text-primary mb-0 px-4 pt-3 pb-2">Pedidos</h5>
</div>
<!-- Chats -->
<ul class="list-unstyled chat-contact-list" id="chat-list">
<li class="chat-contact-list-item chat-list-item-0 d-none">
<h6 class="text-muted mb-0">No Chats Found</h6>
</li>
<!-- CHAT LIST -->
</ul> <div class="flex-grow-1 input-group input-group-merge rounded-pill">
<!-- Contacts --> <span class="input-group-text" id="basic-addon-search31">
<ul class="list-unstyled chat-contact-list mb-0" id="contact-list"> <i class="ti ti-search"></i>
<!-- <li class="chat-contact-list-item chat-contact-list-item-title"> </span>
<h5 class="text-primary mb-0">Contacts</h5> <input type="text" class="form-control chat-search-input"
</li> placeholder="Buscar..." aria-label="Buscar..."
<li class="chat-contact-list-item contact-list-item-0 "> aria-describedby="basic-addon-search31" />
<h6 class="text-muted mb-0">No Contacts Found</h6>
</li> -->
<!-- <li class="chat-contact-list-item">
<a class="d-flex align-items-center">
<div class="avatar d-block flex-shrink-0">
<span class="avatar-initial rounded-circle bg-label-primary">JJ</span>
</div>
<div class="chat-contact-info flex-grow-1 ms-2">
<h6 class="chat-contact-name text-truncate m-0">Jaime Jimenez</h6>
</div>
</a>
</li> -->
</ul>
</div>
</div>
<!-- /Chat contacts -->
<!-- Chat History -->
<div class="col app-chat-history bg-body">
<div class="chat-history-wrapper ">
<div class="chat-history-header border-bottom">
<div class="d-flex justify-content-between align-items-center">
<div class="d-flex overflow-hidden align-items-center">
<i
class="ti ti-menu-2 ti-sm cursor-pointer d-lg-none d-block me-2"
data-bs-toggle="sidebar"
data-overlay
data-target="#app-chat-contacts"></i>
<div class="avatar d-block flex-shrink-0">
<span class="avatar-initial rounded-circle bg-label-primary">P</span>
</div>
<div class="chat-contact-info flex-grow-1 ms-2">
<h6 class="m-0"></h6>
<small class="user-status text-muted"></small>
</div>
</div>
<div class="d-flex align-items-center">
<div class="dropdown d-flex align-self-center">
<button
class="btn p-0"
type="button"
id="chat-header-actions"
data-bs-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false">
<i class="ti ti-dots-vertical"></i>
</button>
<div class="dropdown-menu dropdown-menu-end" aria-labelledby="chat-header-actions">
<a class="dropdown-item" href="javascript:void(0);">Silenciar Conversacion</a>
<a class="dropdown-item" href="javascript:void(0);">Limpiar Conversacion</a>
</div>
</div>
</div>
</div>
</div>
<div class="chat-history-body bg-body ">
<ul class="list-unstyled chat-history" id="chat-conversation">
</ul>
</div>
<!-- Chat message form -->
<div class="chat-history-footer shadow-sm">
<div class="form-send-message d-flex justify-content-between align-items-center">
<input
class="form-control message-input border-0 me-3 shadow-none"
placeholder="Type your message here" />
<div class="message-actions d-flex align-items-center">
<a class="btn btn-primary d-flex send-msg-btn ">
<i class="ti ti-send me-md-1 me-0"></i>
<span class="align-middle d-md-inline-block d-none">Enviar</span>
</a>
</div>
</div>
</div> </div>
</div> </div>
<i class="ti ti-x cursor-pointer d-lg-none d-block position-absolute mt-2 me-1 top-0 end-0"
data-overlay data-bs-toggle="sidebar" data-target="#app-chat-contacts"></i>
</div> </div>
<!-- /Chat History --> <hr class="container-m-nx m-0" />
<div class="sidebar-body">
<div class="chat-contact-list-item-title">
<h5 class="text-primary mb-0 px-4 pt-3 pb-2">Departamentos</h5>
</div>
<!-- Chats -->
<ul class="list-unstyled chat-contact-list" id="chat-list">
<li class="chat-contact-list-item chat-list-item-0 d-none">
<h6 class="text-muted mb-0">No Chats Found</h6>
</li>
<!-- CHAT LIST -->
<div class="app-overlay"></div> </ul>
<!-- Contacts -->
<ul class="list-unstyled chat-contact-list mb-0" id="contact-list">
<li class="chat-contact-list-item chat-contact-list-item-title">
<h5 class="text-primary mb-0">Contactos</h5>
</li>
<li class="chat-contact-list-item contact-list-item-0 d-none">
<h6 class="text-muted mb-0">No Contacts Found</h6>
</li>
</ul>
</div>
</div> </div>
<!-- /Chat contacts -->
<!-- Chat History -->
<div class="col app-chat-history bg-body">
<div class="chat-history-wrapper ">
<div class="chat-history-header border-bottom">
<div class="d-flex justify-content-between align-items-center">
<div class="d-flex overflow-hidden align-items-center">
<i class="ti ti-menu-2 ti-sm cursor-pointer d-lg-none d-block me-2"
data-bs-toggle="sidebar" data-overlay
data-target="#app-chat-contacts"></i>
<div class="avatar d-block flex-shrink-0">
<span
class="avatar-initial rounded-circle bg-label-primary">P</span>
</div>
<div class="chat-contact-info flex-grow-1 ms-2">
<h6 class="m-0"></h6>
<small class="user-status text-muted"></small>
</div>
</div>
<div class="d-flex align-items-center">
<div class="dropdown d-flex align-self-center">
<button class="btn p-0" type="button" id="chat-header-actions"
data-bs-toggle="dropdown" aria-haspopup="true"
aria-expanded="false">
<i class="ti ti-dots-vertical"></i>
</button>
<div class="dropdown-menu dropdown-menu-end"
aria-labelledby="chat-header-actions">
<a class="dropdown-item" href="javascript:void(0);">Silenciar
Conversacion</a>
<a class="dropdown-item" href="javascript:void(0);">Limpiar
Conversacion</a>
</div>
</div>
</div>
</div>
</div>
<div class="chat-history-body bg-body ">
<ul class="list-unstyled chat-history" id="chat-conversation">
</ul>
</div>
<!-- Chat message form -->
<div class="chat-history-footer shadow-sm">
<div
class="form-send-message d-flex justify-content-between align-items-center">
<input class="form-control message-input border-0 me-3 shadow-none"
placeholder="Type your message here" />
<div class="message-actions d-flex align-items-center">
<a class="btn btn-primary d-flex send-msg-btn" style="color:white"
id="send-msg-btn-deparment">
<i class="ti ti-send me-md-1 me-0"></i>
<span class="align-middle d-md-inline-block">Enviar</span>
</a>
<a class="btn btn-primary d-flex send-msg-btn"
id="send-msg-btn-internal">
<i class="ti ti-send me-md-1 me-0"></i>
<span class="align-middle d-md-inline-block ">Enviar</span>
</a>
</div>
</div>
</div>
</div>
</div>
<!-- /Chat History -->
<div class="app-overlay"></div>
</div> </div>
</div> </div>
</div> </div>
@ -149,6 +136,7 @@
</div> </div>
</div> </div>
</div> </div>
</div>
<?= $this->section('css') ?> <?= $this->section('css') ?>

View File

@ -1,19 +1,21 @@
<div class="accordion accordion-bordered mt-3" id="accordionChatPresupuesto"> <div class="accordion accordion-bordered mt-3" id="accordionChatPresupuesto">
<div class="card accordion-item active"> <div class="card accordion-item active">
<h2 class="accordion-header" id="headingChatPresupuesto"> <h2 class="accordion-header" id="headingChatPresupuesto">
<button type="button" class="accordion-button" data-bs-toggle="collapse" data-bs-target="#accordionChatPresupuestoTip" aria-expanded="false" aria-controls="accordionAlbaranesTip"> <button type="button" class="accordion-button" data-bs-toggle="collapse"
data-bs-target="#accordionChatPresupuestoTip" aria-expanded="false"
aria-controls="accordionChatPresupuestoTip">
<h3><?= lang("Chat.chat") ?></h3> <h3><?= lang("Chat.chat") ?></h3>
</button> </button>
</h2> </h2>
<div id="accordionChatPresupuestoTip" class="accordion-collapse collapse show" data-bs-parent="#accordionChatPresupuesto"> <div id="accordionChatPresupuestoTip" class="accordion-collapse collapse show"
data-bs-parent="#accordionChatPresupuesto">
<div class="accordion-body"> <div class="accordion-body">
<div class="container-xxl flex-grow-1" id="chat-presupuesto" data-id="<?= $modelId ?>"> <div class="container-xxl flex-grow-1" id="chat-presupuesto" data-id="<?= $modelId ?>">
<div class="app-chat card overflow-hidden"> <div class="app-chat card overflow-hidden">
<div class="row g-0"> <div class="row g-0">
<!-- Chat & Contacts --> <!-- Chat & Contacts -->
<div <div class="col app-chat-contacts app-sidebar flex-grow-0 overflow-hidden border-end"
class="col app-chat-contacts app-sidebar flex-grow-0 overflow-hidden border-end"
id="app-chat-contacts"> id="app-chat-contacts">
<div class="sidebar-header"> <div class="sidebar-header">
<div class="d-flex align-items-center me-3 me-lg-0"> <div class="d-flex align-items-center me-3 me-lg-0">
@ -25,19 +27,13 @@
<span class="input-group-text" id="basic-addon-search31"> <span class="input-group-text" id="basic-addon-search31">
<i class="ti ti-search"></i> <i class="ti ti-search"></i>
</span> </span>
<input <input type="text" class="form-control chat-search-input"
type="text" placeholder="Buscar..." aria-label="Buscar..."
class="form-control chat-search-input"
placeholder="Buscar..."
aria-label="Buscar..."
aria-describedby="basic-addon-search31" /> aria-describedby="basic-addon-search31" />
</div> </div>
</div> </div>
<i <i class="ti ti-x cursor-pointer d-lg-none d-block position-absolute mt-2 me-1 top-0 end-0"
class="ti ti-x cursor-pointer d-lg-none d-block position-absolute mt-2 me-1 top-0 end-0" data-overlay data-bs-toggle="sidebar" data-target="#app-chat-contacts"></i>
data-overlay
data-bs-toggle="sidebar"
data-target="#app-chat-contacts"></i>
</div> </div>
<hr class="container-m-nx m-0" /> <hr class="container-m-nx m-0" />
<div class="sidebar-body"> <div class="sidebar-body">
@ -60,7 +56,7 @@
<li class="chat-contact-list-item contact-list-item-0 d-none"> <li class="chat-contact-list-item contact-list-item-0 d-none">
<h6 class="text-muted mb-0">No Contacts Found</h6> <h6 class="text-muted mb-0">No Contacts Found</h6>
</li> </li>
</ul> </ul>
</div> </div>
@ -73,33 +69,32 @@
<div class="chat-history-header border-bottom"> <div class="chat-history-header border-bottom">
<div class="d-flex justify-content-between align-items-center"> <div class="d-flex justify-content-between align-items-center">
<div class="d-flex overflow-hidden align-items-center"> <div class="d-flex overflow-hidden align-items-center">
<i <i class="ti ti-menu-2 ti-sm cursor-pointer d-lg-none d-block me-2"
class="ti ti-menu-2 ti-sm cursor-pointer d-lg-none d-block me-2" data-bs-toggle="sidebar" data-overlay
data-bs-toggle="sidebar"
data-overlay
data-target="#app-chat-contacts"></i> data-target="#app-chat-contacts"></i>
<div class="avatar d-block flex-shrink-0"> <div class="avatar d-block flex-shrink-0">
<span class="avatar-initial rounded-circle bg-label-primary">P</span> <span
class="avatar-initial rounded-circle bg-label-primary">P</span>
</div> </div>
<div class="chat-contact-info flex-grow-1 ms-2"> <div class="chat-contact-info flex-grow-1 ms-2">
<h6 class="m-0">Departamento Producción</h6> <h6 class="m-0">Departamento Producción</h6>
<small class="user-status text-muted">Consulta sobre el presupuesto P001</small> <small class="user-status text-muted">Consulta sobre el presupuesto
P001</small>
</div> </div>
</div> </div>
<div class="d-flex align-items-center"> <div class="d-flex align-items-center">
<div class="dropdown d-flex align-self-center"> <div class="dropdown d-flex align-self-center">
<button <button class="btn p-0" type="button" id="chat-header-actions"
class="btn p-0" data-bs-toggle="dropdown" aria-haspopup="true"
type="button"
id="chat-header-actions"
data-bs-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false"> aria-expanded="false">
<i class="ti ti-dots-vertical"></i> <i class="ti ti-dots-vertical"></i>
</button> </button>
<div class="dropdown-menu dropdown-menu-end" aria-labelledby="chat-header-actions"> <div class="dropdown-menu dropdown-menu-end"
<a class="dropdown-item" href="javascript:void(0);">Silenciar Conversacion</a> aria-labelledby="chat-header-actions">
<a class="dropdown-item" href="javascript:void(0);">Limpiar Conversacion</a> <a class="dropdown-item" href="javascript:void(0);">Silenciar
Conversacion</a>
<a class="dropdown-item" href="javascript:void(0);">Limpiar
Conversacion</a>
</div> </div>
</div> </div>
</div> </div>
@ -113,17 +108,19 @@
</div> </div>
<!-- Chat message form --> <!-- Chat message form -->
<div class="chat-history-footer shadow-sm"> <div class="chat-history-footer shadow-sm">
<div class="form-send-message d-flex justify-content-between align-items-center"> <div
<input class="form-send-message d-flex justify-content-between align-items-center">
class="form-control message-input border-0 me-3 shadow-none" <input class="form-control message-input border-0 me-3 shadow-none"
placeholder="Type your message here" /> placeholder="Type your message here" />
<div class="message-actions d-flex align-items-center"> <div class="message-actions d-flex align-items-center">
<a class="btn btn-success d-flex send-msg-btn" id="send-msg-btn-deparment"> <a class="btn btn-primary d-flex send-msg-btn" style="color:white"
id="send-msg-btn-deparment">
<i class="ti ti-send me-md-1 me-0"></i> <i class="ti ti-send me-md-1 me-0"></i>
<span class="align-middle d-md-inline-block">Enviar</span> <span class="align-middle d-md-inline-block">Enviar</span>
</a> </a>
<a class="btn btn-success d-flex send-msg-btn" id="send-msg-btn-internal"> <a class="btn btn-primary d-flex send-msg-btn"
id="send-msg-btn-internal">
<i class="ti ti-send me-md-1 me-0"></i> <i class="ti ti-send me-md-1 me-0"></i>
<span class="align-middle d-md-inline-block ">Enviar</span> <span class="align-middle d-md-inline-block ">Enviar</span>
</a> </a>

View File

@ -28,6 +28,7 @@
<?php if($facturaEntity->estado !='borrador' && (strpos($facturaEntity->numero, "REC ") === 0) ) : ?> <?php if($facturaEntity->estado !='borrador' && (strpos($facturaEntity->numero, "REC ") === 0) ) : ?>
<?= view("themes/vuexy/form/facturas/_rectificadaFacturasItems") ?> <?= view("themes/vuexy/form/facturas/_rectificadaFacturasItems") ?>
<?php endif; ?> <?php endif; ?>
<?= view("themes/vuexy/components/chat_factura",data:["modelId" => $facturaEntity->id]) ?>
<div class="pt-4"> <div class="pt-4">
<?php if($facturaEntity->estado =='borrador') : ?> <?php if($facturaEntity->estado =='borrador') : ?>

View File

@ -5,12 +5,6 @@
<?= $this->section('content'); ?> <?= $this->section('content'); ?>
<!--Content Body--> <!--Content Body-->
<div class="container-xxl flex-grow-1 container-p-y"> <div class="container-xxl flex-grow-1 container-p-y">
<?= view("themes/vuexy/form/presupuestos/cosidotapablanda/_mensajeria",data:["presupuestoId" => null]) ?> <?= view("themes/vuexy/components/chat_general", data: ["modelId" => null]) ?>
</div> </div>
<?= $this->endSection() ?> <?= $this->endSection() ?>

View File

@ -1,55 +1,62 @@
<?= $this->include("themes/_commonPartialsBs/datatables") ?> <?= $this->include("themes/_commonPartialsBs/datatables") ?>
<?= $this->include("themes/_commonPartialsBs/select2bs5") ?> <?= $this->include("themes/_commonPartialsBs/select2bs5") ?>
<?= $this->include("themes/_commonPartialsBs/sweetalert") ?> <?= $this->include("themes/_commonPartialsBs/sweetalert") ?>
<?=$this->extend('themes/vuexy/main/defaultlayout') ?> <?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section("content") ?> <?= $this->section("content") ?>
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<div class="card card-info"> <div class="card card-info">
<div class="card-header"> <div class="card-header">
<h3 class="card-title"><?= $boxTitle ?? $pageTitle ?></h3> <h3 class="card-title"><?= $boxTitle ?? $pageTitle ?></h3>
</div><!--//.card-header --> </div>
<form id="pedidoForm" method="post" class="card-body" action="<?= $formAction ?>"> <!--//.card-header -->
<?= csrf_field() ?> <form id="pedidoForm" method="post" class="card-body" action="<?= $formAction ?>">
<?= csrf_field() ?>
<div class="card-body"> <div class="card-body">
<?= view("themes/_commonPartialsBs/_alertBoxes") ?> <?= view("themes/_commonPartialsBs/_alertBoxes") ?>
<?= !empty($validation->getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?> <?= !empty($validation->getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?>
<?= view("themes/vuexy/form/pedidos/_cabeceraItems") ?> <?= view("themes/vuexy/form/pedidos/_cabeceraItems") ?>
<?= view("themes/vuexy/form/pedidos/_lineasItems") ?> <?= view("themes/vuexy/form/pedidos/_lineasItems") ?>
<?php if (!(auth()->user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente-editor'))) : ?> <?php if (!(auth()->user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente-editor'))) : ?>
<?= view("themes/vuexy/form/pedidos/_albaranesItems") ?> <?= view("themes/vuexy/form/pedidos/_albaranesItems") ?>
<?php endif; ?> <?php endif; ?>
<?= view("themes/vuexy/form/pedidos/_facturasItems") ?> <?= view("themes/vuexy/form/pedidos/_facturasItems") ?>
<?= view("themes/vuexy/components/chat_pedido",data:["pedidoId" => $pedidoEntity->id]) ?> <?= view("themes/vuexy/components/chat_pedido", data: ["modelId" => $pedidoEntity->id]) ?>
</div><!-- /.card-body --> </div><!-- /.card-body -->
<div class="pt-4"> <div class="pt-4">
<?= anchor(route_to("listaPresupuestos"), lang("Basic.global.Cancel"), ["class" => "btn btn-secondary float-start"]) ?> <?= anchor(route_to("listaPresupuestos"), lang("Basic.global.Cancel"), ["class" => "btn btn-secondary float-start"]) ?>
</div><!-- /.card-footer --> </div><!-- /.card-footer -->
</form> </form>
</div><!-- //.card --> </div><!-- //.card -->
</div><!--//.col --> </div>
</div><!--//.row --> <!--//.col -->
</div>
<!--//.row -->
<?= view("themes/_commonPartialsBs/_modalConfirmDialog") ?> <?= view("themes/_commonPartialsBs/_modalConfirmDialog") ?>
<?= $this->endSection() ?> <?= $this->endSection() ?>
<?=$this->section('css') ?> <?= $this->section('css') ?>
<link rel="stylesheet" href="<?= site_url("/themes/vuexy/vendor/libs/flatpickr/flatpickr.css") ?>"> <link rel="stylesheet" href="<?= site_url("/themes/vuexy/vendor/libs/flatpickr/flatpickr.css") ?>">
<link rel="stylesheet" href="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.bootstrap5.min.css") ?>"> <link rel="stylesheet"
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/sk-datatables.css') ?>"> href="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.bootstrap5.min.css") ?>">
<?=$this->endSection() ?> <link rel="stylesheet" href="<?= site_url('themes/vuexy/css/sk-datatables.css') ?>">
<?= $this->endSection() ?>
<?= $this->section('additionalExternalJs') ?> <?= $this->section('additionalExternalJs') ?>
<script src="<?= site_url("/themes/vuexy/vendor/libs/flatpickr/flatpickr.js") ?>"></script> <script src="<?= site_url("/themes/vuexy/vendor/libs/flatpickr/flatpickr.js") ?>"></script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/dataTables.buttons.min.js") ?>"></script> <script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/dataTables.buttons.min.js") ?>">
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.bootstrap5.min.js") ?>"></script> </script>
<script src="<?= site_url("themes/vuexy/vendor/libs/datatables-sk/plugins/select/dataTables.select.min.js") ?>"></script> <script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.bootstrap5.min.js") ?>">
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.html5.min.js") ?>"></script> </script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.print.min.js") ?>"></script> <script src="<?= site_url("themes/vuexy/vendor/libs/datatables-sk/plugins/select/dataTables.select.min.js") ?>">
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/jszip/jszip.min.js") ?>"></script> </script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/pdfmake/pdfmake.min.js") ?>" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.html5.min.js") ?>"></script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/pdfmake/vfs_fonts.js") ?>"></script> <script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.print.min.js") ?>"></script>
<?=$this->endSection() ?> <script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/jszip/jszip.min.js") ?>"></script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/pdfmake/pdfmake.min.js") ?>"
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/pdfmake/vfs_fonts.js") ?>"></script>
<?= $this->endSection() ?>

View File

@ -1,4 +1,6 @@
import Chat from '../components/chat.js' import Chat from '../components/chat.js'
let chat = new Chat($("#chat-factura")) let chat = new Chat($("#chat-factura"))
chat.initFactura() chat.init()
chat.initFactura()
chat._handleListContacts()

View File

@ -0,0 +1,5 @@
import Chat from '../components/chat.js'
let chat = new Chat($("#chat-general"))
chat.init()
chat._handleListContacts()

View File

@ -2,4 +2,5 @@ import Chat from '../components/chat.js'
let chat = new Chat($("#chat-pedido")) let chat = new Chat($("#chat-pedido"))
chat.init() chat.init()
chat.initPedido() chat.initPedido()
chat._handleListContacts()

View File

@ -2,6 +2,9 @@
position: relative; position: relative;
height: calc(100vh - 11.5rem) !important; height: calc(100vh - 11.5rem) !important;
} }
a.send-msg-btn {
color: white
}
@media (min-width: 1200px) { @media (min-width: 1200px) {
.layout-horizontal .app-chat { .layout-horizontal .app-chat {
height: calc(100vh - 11.5rem - 2.2rem) !important; height: calc(100vh - 11.5rem - 2.2rem) !important;