95 lines
4.6 KiB
PHP
Raw Normal View History

2025-03-05 21:11:33 -06:00
<div>
<x-vuexy-admin::offcanvas.basic :id="$offcanvasId" :tag-name="$tagName">
{{-- Dropzone Constancia de Situación Fiscal --}}
<x-vuexy-admin::file.dropzone :uid="$uniqueId" model="doc_file" message="CSF PDF o CFDI XML" note="Arrastra aquí un PDF de Constancia de Situación Fiscal o XML de CFDI para cargar los datos al fomulario" />
<x-vuexy-admin::form :uid="$uniqueId" :id="$formId" :mode="$mode" wireSubmit="onSubmit" actionPosition="both">
<x-slot name="actions">
<x-vuexy-admin::button.offcanvas-buttons :mode="$mode" :tagName="$tagName" />
</x-slot>
{{-- Selección de Sucursal --}}
<x-vuexy-admin::form.input :uid="$uniqueId" model="name" label="Nombre(s)" />
<x-vuexy-admin::form.input :uid="$uniqueId" model="last_name" label="Apellidos" />
<hr>
<div class="row">
<x-vuexy-admin::form.input :uid="$uniqueId" model="code" label="Código de usuario" icon="ti ti-tag" parent-class="col-md-8" autocomplete="off" />
</div>
{{-- Teléfonos y Correos --}}
<x-vuexy-admin::form.input type="email" :uid="$uniqueId" model="email" label="Correo electrónico" icon="ti ti-mail" autocomplete="email" inputmode="email" />
<x-vuexy-admin::form.input type="tel" :uid="$uniqueId" model="tel" label="Teléfono" icon="ti ti-phone" phoneMode="both" />
<hr>
<x-vuexy-admin::form.textarea :uid="$uniqueId" model="notes" label="Notas / Observaciones" />
<hr>
{{-- Estado del Centro de Trabajo --}}
<x-vuexy-admin::form.checkbox :uid="$uniqueId" model="is_partner" label="Es socio" switch />
<x-vuexy-admin::form.checkbox :uid="$uniqueId" model="is_employee" label="Es empleado" switch />
<x-vuexy-admin::form.checkbox :uid="$uniqueId" model="is_prospect" label="Es prospecto" switch />
<x-vuexy-admin::form.checkbox :uid="$uniqueId" model="is_customer" label="Es cliente" switch />
<x-vuexy-admin::form.checkbox :uid="$uniqueId" model="is_provider" label="Es proveedor" switch />
<hr>
</x-vuexy-admin::form>
</x-vuexy-admin::offcanvas.basic>
</div>
@push('page-script')
<script>
// Evento para inicializar el formulario cuando se carga la página
document.addEventListener("DOMContentLoaded", function () {
const initializeUserForm = () => {
let dropzone = new Dropzone("#dropzone_doc_file_{{ $uniqueId }}", {
url: "#",
autoProcessQueue: false,
acceptedFiles: ".pdf,.xml",
maxFiles: 1,
addRemoveLinks: true,
dictDefaultMessage: "Arrastra aquí tu PDF de Constancia de Situación Fiscal",
init: function () {
this.on("addedfile", function (file) {
let reader = new FileReader();
reader.onload = function () {
let input = document.querySelector("#doc_file_{{ $uniqueId }}");
let dataTransfer = new DataTransfer();
dataTransfer.items.add(new File([file], file.name, { type: file.type }));
// Asignamos solo un archivo, no un FileList
//input.files = dataTransfer.files;
// Livewire solo recibe archivos en forma de input, no como FileList
@this.upload('doc_file', dataTransfer.files[0],
(uploadedFile) => {
@this.call('processDocument');
},
(error) => {
console.error("Error al subir PDF:", error);
},
(progressEvent) => {
console.log("Progreso de subida:", progressEvent);
}
);
};
reader.readAsDataURL(file);
});
}
});
};
var myOffcanvas = document.getElementById('{{ $offcanvasId }}');
myOffcanvas.addEventListener('show.bs.offcanvas', function () {
initializeUserForm();
});
});
</script>
@endpush