Update Banner dan Report

This commit is contained in:
Duidev Software House
2025-09-25 20:03:12 +07:00
parent eafd657bfa
commit 2d87021d60
5 changed files with 271 additions and 5 deletions
@@ -284,9 +284,10 @@ class ReportController extends Controller
'periksa.dlp',
'periksa.nm_spesimen',
'periksa.kd_spesimen',
DB::raw("CONCAT('http://10.10.123.218/hasil/', nofoto) as urlhasil"))
DB::raw("CONCAT('<a href=\"http://10.10.123.218/hasil/', nofoto, '\" target=\"_blank\">Lihat Hasil</a>') as urlhasil"))
->leftJoin('periksa', 'db_komponenjawaban.accnumber', 'periksa.nofoto')
->whereIn('db_komponenjawaban.komponen', ['id_bakteri01', 'id_bakteri02', 'bakteri'])
->where('db_komponenjawaban.isidata', '!=', '')
->where('periksa.daftar', 'LIKE', $tahun.'-%')->orderBy('periksa.id', 'DESC')->get();
} else {
$lists = DB::table('db_komponenjawaban')
@@ -299,9 +300,10 @@ class ReportController extends Controller
'periksa.dlp',
'periksa.nm_spesimen',
'periksa.kd_spesimen',
DB::raw("CONCAT('http://10.10.123.218/hasil/', nofoto) as urlhasil"))
DB::raw("CONCAT('<a href=\"http://10.10.123.218/hasil/', nofoto, '\" target=\"_blank\">Lihat Hasil</a>') as urlhasil"))
->leftJoin('periksa', 'db_komponenjawaban.accnumber', 'periksa.nofoto')
->whereIn('db_komponenjawaban.komponen', ['id_bakteri01', 'id_bakteri02', 'bakteri'])
->where('db_komponenjawaban.isidata', '!=', '')
->where('periksa.daftar', 'LIKE', $tahun.'-'.$bulan.'-%')->orderBy('periksa.id', 'DESC')->get();
}
echo json_encode($lists);
@@ -10,6 +10,7 @@ use App\Subjawaban;
use App\SiraB;
use App\Organisms;
use App\Periksa;
use App\KomponenJawaban;
use Validator;
use Picqer\Barcode\BarcodeGeneratorPNG;
use Session;
@@ -343,6 +344,30 @@ class TemplateController extends Controller
return response()->json(['icon' => 'error', 'warna' => '#bf441d', 'status' => 'Failed', 'message' => 'Unkown Error']);
return back();
}
} else if ($tabel == 'BioRepository'){
$kategorisimpan = $request->kategorisimpan;
$shelfnomor = $request->shelfnomor;
$raknomor = $request->raknomor;
$slotnomor = $request->slotnomor;
$boxnomor = $request->boxnomor;
$tubenomor = $request->tubenomor;
$nomor = $kategorisimpan.''.$shelfnomor.''.$raknomor.''.$slotnomor.''.$boxnomor.'-'.$tubenomor;
$data = KomponenJawaban::where('id', $id)->update([
'isidata' => $request->nmbakteri,
'nobiorepository' => $nomor,
'strain' => $request->strain,
'atcc' => $request->atcc,
'sample' => $request->nmbakteri,
'tglpenyimpanan' => $request->tglpenyimpanan,
'created_by' => $request->created_by
]);
if ($data){
return response()->json(['icon' => 'success', 'warna' => '#5ba035', 'status' => 'Success', 'message' => 'Saved']);
return back();
} else {
return response()->json(['icon' => 'error', 'warna' => '#bf441d', 'status' => 'Failed', 'message' => 'Unkown Error']);
return back();
}
} else {
if ($id == 'new'){
$data = new SiraB;
Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

+241 -2
View File
@@ -3,7 +3,6 @@
@section('content')
<div class="wrapper">
<div class="container-fluid">
<!-- end page title end breadcrumb -->
<div class="row">
<div class="col-lg-6">
<div class="card-box ribbon-box">
@@ -87,8 +86,94 @@
</div>
</div>
</div>
</div> <!-- end container -->
</div>
</div>
<div id="modaleditorbiorepository" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">Bio Repository</h4>
</div>
<div class="modal-body">
<form class="form-horizontal">
<div class="form-group m-b-25">
<div class="col-12">
<label>Category Penyimpanan</label>
<select class="form-control" id="kategorisimpan" name="kategorisimpan">
<option value="A">Penyimpanan Suhu Ruang</option>
<option value="B">Penyimpanan Suhu 4 Derajat</option>
<option value="C">Penyimpanan Suhu 20 Derajat</option>
<option value="D">Penyimpanan Suhu 80 Derajat</option>
</select>
</div>
</div>
<div class="form-group row">
<div class="col-lg-4">
<label>Shelf Nomor</label>
<input type="number" class="form-control" id="shelfnomor">
</div>
<div class="col-lg-4">
<label>Rack Number</label>
<input type="number" class="form-control" id="raknomor">
</div>
<div class="col-lg-4">
<label>Slot Number</label>
<input type="number" class="form-control" id="slotnomor">
</div>
<div class="col-lg-4">
<label>Box Number</label>
<input type="number" class="form-control" id="boxnomor">
</div>
<div class="col-lg-4">
<label>Tube Number</label>
<input type="number" class="form-control" id="tubenomor">
</div>
</div>
<div class="form-group m-b-25">
<div class="col-12">
<label>Bactery Name</label>
<input type="text" class="form-control" id="nmbakteri">
</div>
</div>
<div class="form-group m-b-25">
<div class="col-12">
<label>Strain</label>
<select class="form-control" id="strain" name="strain">
<option value="Gram Negatif">Gram Negatif</option>
<option value="Gram Positif">Gram Positif</option>
</select>
</div>
</div>
<div class="form-group m-b-25">
<div class="col-12">
<label>ATCC</label>
<input type="text" class="form-control" id="atcc">
</div>
</div>
<div class="form-group m-b-25">
<div class="col-12">
<label>Tgl Penyimpanan</label>
<input type="text" class="form-control" id="tglpenyimpanan">
</div>
</div>
<div class="form-group m-b-25">
<div class="col-12">
<label>Nama Pelaksana / Pemilik</label>
<input type="text" class="form-control" id="createdby">
</div>
</div>
<div class="form-group account-btn text-center m-t-10">
<div class="col-12">
<input type="hidden" class="form-control" id="idbakteri">
<button class="btn w-lg btn-custom waves-effect waves-light" id="btnsimpandata" type="button">Save</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<div id="tempatctk" style="overflow: hidden; display: none;">
<div id="tabel_cetak"></div>
</div>
@@ -96,11 +181,14 @@
@endsection
@push('script')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('#divlaporan').hide();
$('#divlaporanharian').hide();
$("#tanggal").datepicker({format: 'yyyy-mm-dd'});
$("#tglpenyimpanan").datepicker({format: 'yyyy-mm-dd'});
$('#btnReport').click(function () {
var bulan = document.getElementById('bulan').value;
var tahun = document.getElementById('tahun').value;
@@ -282,6 +370,93 @@ $(document).ready(function () {
columnsresize : true,
selectionmode : 'multiplecellsextended',
columns : [
{ text: 'Edit', filterable: false, columntype: 'button', align: 'center', width: 50, cellsrenderer: function () {
return "Edit";
}, buttonclick: function (row) {
editrowjabatan = row;
var offset = $("#result").offset();
var dataRecord = $("#result").jqxGrid('getrowdata', editrowjabatan);
$("#idbakteri").val(dataRecord.id);
$("#createdby").val(dataRecord.created_by);
$("#tglpenyimpanan").val(dataRecord.tglpenyimpanan);
$("#atcc").val(dataRecord.atcc);
$("#strain").val(dataRecord.strain);
$("#nmbakteri").val(dataRecord.isidata);
$("#tubenomor").val('');
$("#boxnomor").val('');
$("#slotnomor").val('');
$("#raknomor").val('');
$("#shelfnomor").val('');
$("#kategorisimpan").val('');
$('#modaleditorbiorepository').modal('show');
}
},
{ text: 'Stiker', filterable: false, columntype: 'button', align: 'center', width: 50, cellsrenderer: function () {
return "Print";
}, buttonclick: function (row) {
editrowjabatan = row;
var offset = $("#result").offset();
var dataRecord = $("#result").jqxGrid('getrowdata', editrowjabatan);
if (typeof window.jspdf === 'undefined' || typeof JsBarcode === 'undefined') {
swal({
title : 'Plugin Error',
text : 'Kesalahan: Library jsPDF atau JsBarcode belum dimuat',
type : 'error',
})
return;
}
const { jsPDF } = window.jspdf;
const doc = new jsPDF({
orientation: 'landscape',
unit: 'mm',
format: [50, 35]
});
const leftMargin = 2;
const contentWidth = 50 - (leftMargin * 2);
let yPosition = 4;
doc.setFont('helvetica', 'bold');
doc.setFontSize(7);
doc.text(`${dataRecord.nofoto} / ${dataRecord.noregister}`, leftMargin, yPosition, {
maxWidth: contentWidth,
});
yPosition += 4;
try {
const canvas = document.createElement('canvas');
JsBarcode(canvas, dataRecord.nobiorepository, {
format: "CODE128",
displayValue: false,
height: 40,
width: 1.5,
margin: 5
});
const barcodeDataUrl = canvas.toDataURL('image/png');
const barcodeHeight = 10;
doc.addImage(barcodeDataUrl, 'PNG', leftMargin, yPosition, contentWidth, barcodeHeight);
yPosition += barcodeHeight + 3;
doc.setFont('helvetica', 'bold');
doc.setFontSize(9);
const centerX = 50 / 2;
doc.text(dataRecord.nobiorepository, centerX, yPosition, { align: 'center' });
yPosition += 4;
} catch (e) {
console.error("Gagal membuat barcode:", e);
doc.text("Error Barcode", leftMargin, yPosition);
yPosition += 12;
}
doc.setFont('helvetica', 'bold');
doc.setFontSize(6.5);
doc.text(`${dataRecord.isidata} / ${dataRecord.strain} / ${dataRecord.created_by} `, leftMargin, yPosition, {
maxWidth: contentWidth,
});
yPosition += 6;
doc.text(`${dataRecord.atcc} ( ${dataRecord.tglpenyimpanan} )`, leftMargin, yPosition, {
maxWidth: contentWidth,
});
doc.output('dataurlnewwindow');
}
},
{ text: 'Nomor BioRepository', datafield: 'nobiorepository', width: 150, cellsalign: 'left', align: 'center'},
{ text: 'Nama Bakteri', datafield: 'isidata', width: 150, cellsalign: 'left', align: 'center'},
{ text: 'STRAIN', datafield: 'strain', width: 150, cellsalign: 'left', align: 'center'},
@@ -599,6 +774,70 @@ $(document).ready(function () {
});
return false;
});
$("#btnsimpandata").click(function(){
var set01 = document.getElementById('idbakteri').value;
var set02 = document.getElementById('createdby').value;
var set03 = document.getElementById('tglpenyimpanan').value;
var set04 = document.getElementById('atcc').value;
var set05 = document.getElementById('strain').value;
var set06 = document.getElementById('nmbakteri').value;
var set07 = document.getElementById('tubenomor').value;
var set08 = document.getElementById('boxnomor').value;
var set09 = document.getElementById('slotnomor').value;
var set10 = document.getElementById('raknomor').value;
var set11 = document.getElementById('shelfnomor').value;
var set12 = document.getElementById('kategorisimpan').value;
$('#modaleditorbiorepository').modal('hide');
var form_data = new FormData();
form_data.append('id', set01);
form_data.append('created_by', set02);
form_data.append('tglpenyimpanan', set03);
form_data.append('atcc', set04);
form_data.append('strain', set05);
form_data.append('nmbakteri', set06);
form_data.append('tubenomor', set07);
form_data.append('boxnomor', set08);
form_data.append('slotnomor', set09);
form_data.append('raknomor', set10);
form_data.append('shelfnomor', set11);
form_data.append('kategorisimpan', set12);
form_data.append('tabel', 'BioRepository');
form_data.append('_token', '{{csrf_token()}}');
$.ajax({
url : '{{ route("exSIRAb") }}',
data : form_data,
type : 'POST',
contentType : false,
processData : false,
success : function (data) {
var status = data.status;
var message = data.message;
var icon = data.icon;
var warna = data.warna;
$("html, body").animate({ scrollTop: 0 }, "slow");
$.toast({
heading : status,
text : message,
position : 'top-right',
loaderBg : warna,
icon : icon,
hideAfter : 3000,
stack : 1
});
$("#result").jqxGrid('updatebounddata', 'filter');
return false;
},
error : function (xhr, status, error) {
var response = xhr.responseJSON || {};
var traceText = response.trace ? JSON.stringify(response.trace) : null;
swal({
title : response,
text : traceText,
type : 'error',
})
}
});
});
});
</script>
@endpush
+1 -1
View File
@@ -29,7 +29,7 @@
<div class="form-group col-10">
<h2 class="text-uppercase text-center pb-4">
<a href="{{url('/')}}" class="text-success">
<span><img src="{{ asset('lis.png') }}" alt="" width="100%"></span>
<span><img src="{{ asset('banner.png') }}" alt="" width="100%"></span>
</a>
</h2>
@if(Session::has('message'))