This commit is contained in:
Duidev Software House
2025-09-09 20:07:05 +07:00
parent cf81c9503b
commit 9c261cd32d
6 changed files with 424 additions and 176 deletions
+106 -22
View File
@@ -400,6 +400,7 @@
</div>
@endsection
@push('script')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
<script type="text/javascript">
$("#noregister").on('change', function () {
var val01 = document.getElementById('noregister').value;
@@ -437,7 +438,7 @@
var start = new Date();
CountDownTimer(start, 'timeremaining');
function CountDownTimer(dt, id) {
var end = new Date(dt.getTime() + 60000);
var end = new Date(dt.getTime() + 1500000);
var _second = 1000;
var _minute = _second * 60;
var _hour = _minute * 60;
@@ -697,16 +698,12 @@
editrowjabatan = row;
var offset = $("#gridpemeriksaan").offset();
var dataRecord = $("#gridpemeriksaan").jqxGrid('getrowdata', editrowjabatan);
var nofoto = dataRecord.nofoto || '000000';
var asalpasien = dataRecord.asalpasien || 'RSSA';
var kd_spesimen = dataRecord.kd_spesimen || '00';
var noregister = dataRecord.noregister || '00000';
var nama = dataRecord.nama || 'xx';
var tgllahir = dataRecord.tgllahir || '0000-00-00';
var reques = dataRecord.poli || '-';
var daftartgl = dataRecord.daftartgl || '0000-00-00';
var item = `${asalpasien}<>${kd_spesimen}<>${noregister}<>${nama}<>${tgllahir}<>${reques}<>${daftartgl}`;
jQueryOpenBarCode(item, nofoto);
var token = document.getElementById('token').value;
$.post('{{ route("exCekAksess") }}', { nofoto: 'stiker', noregister: dataRecord.noregister, daftartgl: dataRecord.daftartgl, nm_spesimen: dataRecord.nm_spesimen, _token: token },
function(data){
jQueryOpenBarCode(data.item, data.nofoto);
});
}
},
{ text: 'Ulang', filterable: false, columntype: 'button', align: 'center', width: 50, cellsrenderer: function () {
@@ -783,7 +780,7 @@
reader.readAsDataURL(input.files[0]);
}
}
function jQueryOpenBarCode(item, nofoto) {
function HTMLOpenBarCode(item, nofoto) {
var itemParts = item.split('<>');
var asalpasien = itemParts[0]?.trim() || "xx";
var kd_spesimen = itemParts[1]?.trim() || "xx";
@@ -798,13 +795,13 @@
var style = `
<style>
@page {
size: 5.5cm 4cm landscape;
size: 5cm 3.5cm landscape;
margin: 0;
}
@media print {
body {
width: 5.5cm;
height: 4cm;
width: 5cm;
height: 3.5cm;
margin: 0;
top: 0mm;
padding: 0mm;
@@ -812,8 +809,8 @@
}
}
body {
width: 5.5cm;
height: 4cm;
width: 5cm;
height: 3.5cm;
margin: 0;
padding: 0mm;
font-family: Tahoma, Arial, sans-serif;
@@ -848,16 +845,16 @@
<body>
<table>
<tr>
<td>${nofoto} / ${kd_spesimen} / ${asalpasien}</td>
<td>&nbsp;</td><td>${kd_spesimen} / ${asalpasien}</td>
</tr>
<tr>
<td><svg id="barcode"></svg></td>
<td>&nbsp;</td><td><svg id="barcode"></svg></td>
</tr>
<tr>
<td>${noregister} / ${nama} / ${tgllahir}</td>
<td>&nbsp;</td><td>${noregister} / ${nama} / ${tgllahir}</td>
</tr>
<tr>
<td>${reques} ( ${daftartgl} )</td>
<td>&nbsp;</td><td>${reques} ( ${daftartgl} )</td>
</tr>
</table>
</body>
@@ -872,7 +869,7 @@
if (barcodeElement) {
JsBarcode(barcodeElement, nofoto, {
format: "CODE128",
displayValue: false,
displayValue: true,
height: 25,
margin: 0
});
@@ -890,6 +887,93 @@
}
};
}
function jQueryOpenBarCode(item, nofoto) {
// Pastikan library sudah termuat
if (typeof window.jspdf === 'undefined' || typeof JsBarcode === 'undefined') {
alert('Kesalahan: Library jsPDF atau JsBarcode belum dimuat.');
return;
}
// 1. Parsing data (sama seperti sebelumnya)
const itemParts = item.split('<>');
const asalpasien = itemParts[0]?.trim() || "xx";
const kd_spesimen = itemParts[1]?.trim() || "xx";
const noregister = itemParts[2]?.trim() || "xx";
let nama = itemParts[3]?.trim() || "xx";
const tgllahir = itemParts[4]?.trim() || "0000-00-00";
const reques = itemParts[5]?.trim() || "xx";
const daftartgl = itemParts[6]?.trim() || "xx";
if (nama.length > 12) {
nama = nama.substring(0, 12) + ".";
}
// 2. Inisialisasi dokumen PDF
const { jsPDF } = window.jspdf;
const doc = new jsPDF({
orientation: 'landscape',
unit: 'mm',
format: [50, 35]
});
// 3. Pengaturan Teks dan Posisi
const leftMargin = 2;
const contentWidth = 50 - (leftMargin * 2);
let yPosition = 4;
doc.setFont('helvetica', 'bold');
doc.setFontSize(7);
doc.text(`${kd_spesimen} / ${asalpasien}`, leftMargin, yPosition, {
maxWidth: contentWidth,
});
yPosition += 4; // Geser posisi Y ke bawah untuk barcode
// 4. Generate Barcode dan tambahkan ke PDF (BAGIAN YANG DIUBAH)
try {
const canvas = document.createElement('canvas');
JsBarcode(canvas, nofoto, {
format: "CODE128",
displayValue: false, // DIUBAH: Tidak menampilkan teks bawaan
height: 40,
width: 1.5,
margin: 5 // Beri sedikit margin agar tidak terpotong
});
const barcodeDataUrl = canvas.toDataURL('image/png');
const barcodeHeight = 10; // Tinggi gambar barcode di PDF (dalam mm)
// Tambahkan gambar barcode ke PDF
doc.addImage(barcodeDataUrl, 'PNG', leftMargin, yPosition, contentWidth, barcodeHeight);
// Pindahkan posisi Y ke bawah gambar barcode
yPosition += barcodeHeight + 3;
// DITAMBAHKAN: Tulis teks nofoto secara manual di bawah barcode
doc.setFont('helvetica', 'bold'); // Set font biasa (tidak bold)
doc.setFontSize(8); // Atur ukuran font agar jelas
const centerX = 50 / 2; // Titik tengah horizontal halaman
doc.text(nofoto, centerX, yPosition, { align: 'center' }); // Teks dibuat rata tengah
// Pindahkan posisi Y untuk baris selanjutnya
yPosition += 4;
} catch (e) {
console.error("Gagal membuat barcode:", e);
doc.text("Error Barcode", leftMargin, yPosition);
yPosition += 12;
}
// 5. Menambahkan sisa teks
doc.setFont('helvetica', 'bold'); // Kembalikan font menjadi bold
doc.setFontSize(6.5);
doc.text(`${noregister} / ${nama} / ${tgllahir}`, leftMargin, yPosition, {
maxWidth: contentWidth,
});
yPosition += 4;
doc.text(`${reques} ( ${daftartgl} )`, leftMargin, yPosition, {
maxWidth: contentWidth,
});
// 6. Tampilkan PDF di tab baru
doc.output('dataurlnewwindow');
}
$(window).on('load', function () {
openedpage();
});