Files
accounting_dev_v2/application/views/peralatan_teknisi/workbench.php
T
2026-09-15 10:38:43 +07:00

60 lines
24 KiB
PHP

<?php
$inventory_title='Peralatan Teknisi';$inventory_subtitle='Perpindahan, penguasaan, pemasangan, penggantian, dan pemeriksaan tanpa jurnal accounting.';
$panel=$active_panel??'overview';$perm=$equipment_permissions??array();$dash=$equipment_dashboard??array('summary'=>array(),'technicians'=>array(),'inspection_count'=>0);
function tech_qty($value){$n=(float)$value;return abs($n-round($n))<.0001?number_format($n,0,',','.'):number_format($n,4,',','.');}
?>
<?php $this->load->view('inventory_professional/_module_nav',get_defined_vars()); ?>
<link rel="stylesheet" href="<?=base_url('assets/css/technician-equipment.css')?>?v=<?=filemtime(FCPATH.'assets/css/technician-equipment.css')?>">
<div class="tech-shell" id="techWorkbench" data-base="<?=base_url()?>" data-panel="<?=html_escape($panel)?>" data-permissions='<?=html_escape(json_encode($perm))?>'>
<?php $this->load->view('peralatan_teknisi/_module_nav',get_defined_vars()); ?>
<?php if($panel==='overview'):?>
<div class="tech-summary">
<?php foreach(array('carried'=>array('Dibawa Teknisi','bi-person-bag','status','carried'),'installed'=>array('Terpasang','bi-house-check','status','installed'),'inspection'=>array('Menunggu Periksa','bi-clipboard-pulse','condition','inspection_required'),'repair'=>array('Dalam Perbaikan','bi-wrench-adjustable','condition','under_repair'),'damaged'=>array('Rusak','bi-exclamation-octagon','condition','damaged'),'lost'=>array('Hilang','bi-question-diamond','condition','lost')) as$key=>$meta):?>
<a class="tech-stat tech-stat-<?=$key?>" href="<?=base_url('teknisi/log_barang').'?'.http_build_query(array($meta[2]=>$meta[3]))?>" title="Lihat riwayat <?=html_escape(strtolower($meta[0]))?>"><small><i class="bi <?=$meta[1]?>"></i> <?=$meta[0]?></small><strong data-summary="<?=$key?>"><?=tech_qty($dash['summary'][$key]??0)?></strong><span class="tech-stat-link"><i class="bi bi-arrow-right"></i></span></a>
<?php endforeach?>
</div>
<section class="tech-card" id="scanner">
<div class="tech-card-head"><div><span class="tech-step-label">Scan terlebih dahulu</span><h5>Temukan Posisi dan Tindakan Barang</h5><p>Scan barcode/serial perusahaan maupun barang customer. Sistem hanya menampilkan tindakan yang valid.</p></div></div>
<form class="tech-scan" id="techScanForm" data-ajax="true"><input class="form-control" id="techScanCode" autocomplete="off" placeholder="Scan barcode/SN atau cari nama barang" autofocus><button class="btn btn-primary px-4"><i class="bi bi-search"></i> Cari / Scan</button></form>
<div class="tech-scan-result tech-empty" id="techScanResult"><i class="bi bi-upc-scan fs-2 d-block mb-2"></i>Belum ada barcode yang diperiksa.</div>
</section>
<section class="tech-card" id="technicians">
<div class="tech-card-head"><div><h5>Penguasaan per Teknisi</h5><p>Buka halaman detail untuk melihat barang dibawa, terpasang, hasil pelepasan, dan riwayat.</p></div></div>
<div class="tech-table-wrap"><table class="table tech-table align-middle" id="techTechniciansTable"><thead><tr><th>Teknisi</th><th>Departemen</th><th>Jenis Barang</th><th>Dibawa</th><th>Terpasang</th><th>Aksi</th></tr></thead><tbody>
<?php foreach($dash['technicians']??array() as$t):?><tr><td><strong><?=html_escape($t->full_name)?></strong><br><small><?=html_escape($t->employee_code)?></small></td><td><?=html_escape($t->department_name?:'-')?></td><td><?=tech_qty($t->subject_count)?></td><td><?=tech_qty($t->carried_qty)?></td><td><?=tech_qty($t->installed_qty)?></td><td><a class="btn btn-outline-primary btn-sm" href="<?=base_url('teknisi/detail/'.(int)$t->id)?>"><i class="bi bi-eye"></i> Detail</a></td></tr><?php endforeach?>
<?php if(empty($dash['technicians'])):?><tr><td colspan="6" class="tech-empty">Belum ada penguasaan barang teknisi.</td></tr><?php endif?></tbody></table></div>
</section>
<section class="tech-card"><div class="tech-card-head"><div><h5>Dokumen Operasional Terakhir</h5><p>Histori immutable; koreksi tidak dilakukan dengan menghapus dokumen.</p></div></div><div class="tech-table-wrap"><table class="table tech-table align-middle" id="techDocumentsTable"><thead><tr><th>Dokumen</th><th>Tanggal</th><th>Proses</th><th>Teknisi / Customer</th><th>Item</th><th>Aksi</th></tr></thead><tbody><tr><td colspan="6" class="tech-empty">Memuat riwayat...</td></tr></tbody></table></div></section>
<?php elseif($panel==='replacement'):?>
<form id="techReplacementForm" data-ajax="true" enctype="multipart/form-data">
<section class="tech-card"><div class="tech-card-head"><div><span class="tech-step-label">Satu dokumen atomik</span><h5>Pemasangan Sekaligus Penggantian</h5><p>Barang baru dipasang dan barang lama dilepas dalam satu posting. Jika salah satu gagal, seluruh proses dibatalkan.</p></div></div>
<div class="tech-form-grid"><label>Customer *<select class="form-select" name="customer_id" required><option value="">Pilih customer</option><?php foreach($customers as$c):?><option value="<?=$c->id?>"><?=html_escape($c->nama)?></option><?php endforeach?></select></label><label>Teknisi *<select class="form-select" name="technician_id" required><option value="">Pilih teknisi</option><?php foreach($teknisi_list as$t):?><option value="<?=$t->id?>"><?=html_escape($t->employee_code.' - '.$t->full_name)?></option><?php endforeach?></select></label><label>Tanggal *<input class="form-control" type="date" name="date" value="<?=date('Y-m-d')?>" required></label><label>Work Order / Tiket<input class="form-control" name="work_order_no"></label><label>Lokasi Pemasangan *<input class="form-control" name="installation_location" required></label><label>Alasan Penggantian *<input class="form-control" name="reason" required></label></div>
</section>
<div class="tech-two">
<section class="tech-card"><span class="tech-step-label">Barang dipasang</span><h5 class="mb-3">Pengganti dari Teknisi</h5><label>Scan atau cari barang *<div class="tech-inline-search"><input class="form-control" id="techOutgoingSearch" autocomplete="off" placeholder="Scan barcode/SN atau ketik nama barang"><button type="button" class="btn btn-outline-primary tech-replacement-search" data-kind="carried"><i class="bi bi-search"></i></button></div></label><small class="text-muted d-block mb-2" id="techOutgoingHint">Pilih teknisi terlebih dahulu.</small><label>Barang yang dipilih *<select class="form-select tech-allocation-select" name="outgoing_allocation_id" data-kind="carried" required><option value="">Pilih teknisi terlebih dahulu</option></select></label><div class="tech-selection-info mt-2" id="techOutgoingInfo">Belum ada barang dipilih.</div><label class="mt-3">Jumlah <input class="form-control" name="outgoing_qty" inputmode="decimal" placeholder="Otomatis 1 untuk UNIT"></label><small class="text-muted">Barang harus berada dalam penguasaan teknisi.</small></section>
<section class="tech-card"><span class="tech-step-label">Barang dilepas</span><h5 class="mb-3">Barang Lama di Customer</h5><label>Scan atau cari barang<div class="tech-inline-search"><input class="form-control" id="techIncomingSearch" autocomplete="off" placeholder="Scan barcode/SN atau ketik nama barang"><button type="button" class="btn btn-outline-primary tech-replacement-search" data-kind="installed"><i class="bi bi-search"></i></button></div></label><small class="text-muted d-block mb-2" id="techIncomingHint">Pilih customer terlebih dahulu.</small><label>Barang terpasang yang dipilih<select class="form-select tech-allocation-select" name="incoming_allocation_id" data-kind="installed"><option value="">Pilih customer terlebih dahulu</option></select></label><div class="tech-selection-info mt-2" id="techIncomingInfo">Bisa milik perusahaan maupun milik customer.</div><label class="mt-3">Jumlah <input class="form-control" name="incoming_qty" inputmode="decimal" value="1"></label><div class="form-check mt-3"><input class="form-check-input" type="checkbox" id="techNewOldItem"><label class="form-check-label" for="techNewOldItem">Barang lama belum terdaftar</label></div><div id="techOldItemFields" class="tech-form-grid mt-3 d-none"><label class="full">Nama barang *<input class="form-control" name="old_equipment_name"></label><label>Barcode eksternal *<input class="form-control" name="old_barcode"></label><label>Serial number<input class="form-control" name="old_serial_number"></label><label>Kepemilikan<select class="form-select" name="old_ownership_type"><option value="customer">Milik Customer</option><option value="transferred_non_inventory">Milik Perusahaan (Non-Persediaan)</option><option value="unknown">Belum Diketahui</option></select></label><label>Kondisi<select class="form-select" name="old_condition"><option value="inspection_required">Perlu Diperiksa</option><option value="good">Baik</option><option value="repair_required">Perlu Perbaikan</option><option value="damaged">Rusak</option></select></label></div></section>
</div>
<section class="tech-card"><div class="tech-form-grid"><label class="full">Keterangan lengkap *<textarea class="form-control" name="notes" rows="3" required></textarea></label><div class="full"><label class="form-label">Foto sebelum/sesudah atau dokumen</label><div class="tech-file-box" data-filebox><label class="tech-add-file"><i class="bi bi-plus-lg fs-4"></i><span class="small">Tambah</span><input class="d-none" type="file" name="attachments[]" accept="image/*,application/pdf" multiple></label></div></div></div><?php if(!empty($perm['install'])):?><div class="text-end mt-3"><button class="btn btn-primary"><i class="bi bi-check2-circle"></i> Posting Penggantian</button></div><?php endif?></section>
</form>
<?php elseif($panel==='inspection'):?>
<section class="tech-card">
<div class="tech-card-head"><div><span class="tech-step-label">Pemeriksaan terarah</span><h5>Antrean Pemeriksaan Barang Kembali</h5><p>Barang yang masih dibawa teknisi ditampilkan sebagai pengingat. Barang yang telah kembali dapat diperiksa dari gudang perusahaan maupun penyimpanan customer.</p></div></div>
<form id="techInspectionFilter" data-ajax="true" class="tech-form-grid border rounded p-3 mb-3"><label>Dari Tanggal<input class="form-control" type="date" name="date_from"></label><label>Sampai Tanggal<input class="form-control" type="date" name="date_to"></label><label>Teknisi<select class="form-select" name="technician_id"><option value="">Semua teknisi</option><?php foreach($teknisi_list as$t):?><option value="<?=$t->id?>"><?=html_escape($t->full_name)?></option><?php endforeach?></select></label><label>Customer<select class="form-select" name="customer_id"><option value="">Semua customer</option><?php foreach($customers as$c):?><option value="<?=$c->id?>"><?=html_escape($c->nama)?></option><?php endforeach?></select></label><label>Kepemilikan<select class="form-select" name="ownership"><option value="">Semua</option><option value="company">Perusahaan</option><option value="customer">Customer</option><option value="transferred_non_inventory">Non-Persediaan Diserahkan</option><option value="unknown">Belum Diketahui</option></select></label><label>Kondisi<select class="form-select" name="condition"><option value="">Semua</option><option value="inspection_required">Perlu Diperiksa</option><option value="repair_required">Perlu Perbaikan</option><option value="under_repair">Dalam Perbaikan</option><option value="damaged">Rusak</option></select></label><label>Status<select class="form-select" name="status"><option value="">Semua</option><option value="returned">Dikembalikan</option><option value="removed">Dilepas</option></select></label><div class="d-flex align-items-end"><button class="btn btn-primary w-100"><i class="bi bi-funnel"></i> Terapkan Filter</button></div></form>
<div class="tech-table-wrap"><table class="table tech-table align-middle" id="techInspectionTable"><thead><tr><th>Barang</th><th>Barcode / Serial</th><th>Pemilik</th><th>Posisi Sekarang</th><th>Teknisi / Customer Asal</th><th>Qty</th><th>Langkah Berikutnya</th></tr></thead><tbody><tr><td colspan="7" class="tech-empty">Memuat antrean...</td></tr></tbody></table></div>
</section>
<?php elseif($panel==='customer'):?>
<section class="tech-card mt-0"><div class="tech-card-head"><div><span class="tech-step-label">Cek terlebih dahulu</span><h5>Scan Barcode / Serial Barang Customer</h5><p>Jika barang pernah dicatat, gunakan data lama dan lanjutkan pergerakan tanpa mengisi identitas lagi.</p></div></div><form class="tech-scan" id="techCustomerLookupForm" data-ajax="true"><input class="form-control" id="techCustomerLookup" autocomplete="off" placeholder="Scan barcode/SN atau cari nama barang customer" autofocus><button class="btn btn-primary"><i class="bi bi-search"></i> Cari</button></form><div id="techCustomerLookupResult" class="mt-3 d-none"></div></section>
<section class="tech-card"><div class="tech-card-head"><div><span class="tech-step-label">Ringkasan per customer</span><h5>Daftar Customer yang Memiliki Barang</h5><p>Klik detail untuk melihat barang perusahaan maupun barang customer, posisi terakhir, dan statusnya.</p></div></div><div class="tech-table-wrap"><table class="table tech-table align-middle" id="techCustomerTable"><thead><tr><th>Customer</th><th>Jenis Barang</th><th>Total Qty</th><th>Milik Perusahaan</th><th>Milik Customer</th><th>Terpasang</th><th>Kondisi Baik</th><th>Aksi</th></tr></thead><tbody><tr><td colspan="8" class="tech-empty">Memuat ringkasan...</td></tr></tbody></table></div></section>
<form class="tech-card" id="techCustomerItemForm" data-ajax="true" enctype="multipart/form-data"><div class="tech-card-head"><div><span class="tech-step-label">Non-accounting</span><h5>Catat Barang Milik Customer</h5><p>Gunakan form ini hanya jika barcode/SN belum pernah tercatat. Data tidak masuk persediaan, costing, atau jurnal.</p></div></div><div class="tech-form-grid"><label>Customer Pemilik *<select class="form-select" name="owner_customer_id" required><option value="">Pilih customer</option><?php foreach($customers as$c):?><option value="<?=$c->id?>"><?=html_escape($c->nama)?></option><?php endforeach?></select></label><label>Nama Barang *<input class="form-control" name="equipment_name" required></label><label>Kategori<input class="form-control" name="category"></label><label>Merek<input class="form-control" name="brand"></label><label>Model<input class="form-control" name="model"></label><label>Serial Number<input class="form-control" name="serial_number"></label><label>Barcode Eksternal *<input class="form-control" name="external_barcode" required></label><label>Kepemilikan<select class="form-select" name="ownership_type"><option value="customer">Milik Customer</option><option value="transferred_non_inventory">Milik Perusahaan (Non-Persediaan)</option><option value="unknown">Belum Diketahui</option></select></label><label>Jenis Tracking<select class="form-select" name="tracking_type"><option value="UNIT">UNIT — satu barcode satu unit</option><option value="QTY">QTY — satu barcode beberapa unit</option></select></label><label>Jumlah<input class="form-control" name="qty" inputmode="decimal" value="1"></label><label>Tanggal Diterima / Dicatat *<input class="form-control" type="date" name="source_date" value="<?=date('Y-m-d')?>" required></label><label>Dokumen Sumber<input class="form-control" name="source_document_no" placeholder="BAST / tiket / work order"></label><label class="full">Alasan / Asal Barang<input class="form-control" name="source_reason"></label><label class="full tech-check"><input type="checkbox" name="deployment_allowed" value="1"><span>Diizinkan dipasang kembali pada customer lain</span></label><label class="full">Referensi otorisasi<input class="form-control" name="authorization_reference"></label><label class="full">Deskripsi<input class="form-control" name="description"></label><div class="full"><label class="form-label">Foto / Bukti Penyerahan</label><div class="tech-file-box" data-filebox><label class="tech-add-file"><i class="bi bi-plus-lg fs-4"></i><span class="small">Tambah</span><input class="d-none" type="file" name="attachments[]" accept="image/*,application/pdf" multiple></label></div></div></div><?php if(!empty($perm['register'])):?><button class="btn btn-primary mt-3">Simpan Register</button><?php endif?></form>
<?php endif?>
</div>
<div class="modal fade tech-modal" id="techActionModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1"><div class="modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable"><form class="modal-content" id="techActionForm" data-ajax="true" enctype="multipart/form-data"><div class="modal-header"><div><small class="text-muted">PERGERAKAN OPERASIONAL</small><h5 class="modal-title">Catat Pergerakan</h5></div><button type="button" class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body"><input type="hidden" name="action"><input type="hidden" name="subject_id"><input type="hidden" name="allocation_id"><input type="hidden" name="idempotency_key"><div id="techActionSubject" class="tech-warning mb-3"></div><div class="tech-form-grid"><label>Tanggal *<input class="form-control" type="date" name="date" value="<?=date('Y-m-d')?>" required></label><label data-field="qty">Jumlah *<input class="form-control" name="qty" inputmode="decimal"></label><label data-field="technician">Teknisi *<select class="form-select" name="technician_id"><option value="">Pilih teknisi</option><?php foreach($teknisi_list as$t):?><option value="<?=$t->id?>"><?=html_escape($t->employee_code.' - '.$t->full_name)?></option><?php endforeach?></select></label><label data-field="target_technician">Teknisi Tujuan *<select class="form-select" name="target_technician_id"><option value="">Pilih teknisi</option><?php foreach($teknisi_list as$t):?><option value="<?=$t->id?>"><?=html_escape($t->employee_code.' - '.$t->full_name)?></option><?php endforeach?></select></label><label data-field="customer">Customer *<select class="form-select" name="customer_id"><option value="">Pilih customer</option><?php foreach($customers as$c):?><option value="<?=$c->id?>"><?=html_escape($c->nama)?></option><?php endforeach?></select></label><label data-field="warehouse">Gudang Penerima *<select class="form-select" name="warehouse_id"><option value="">Pilih gudang</option><?php foreach($warehouses as$w):?><option value="<?=$w->id?>"><?=html_escape($w->nama)?></option><?php endforeach?></select></label><label data-field="condition">Kondisi Saat Dilepas<select class="form-select" name="condition_status"><option value="inspection_required">Perlu Diperiksa</option><option value="good">Baik</option><option value="repair_required">Perlu Perbaikan</option><option value="damaged">Rusak</option></select></label><label data-field="inspection">Hasil Pemeriksaan *<select class="form-select" name="result_status"><option value="">Pilih hasil</option><option value="good">Layak Digunakan</option><option value="repair_required">Perlu Perbaikan</option><option value="under_repair">Dalam Perbaikan</option><option value="damaged">Rusak</option><option value="lost">Hilang</option><option value="return_customer">Dikembalikan ke Customer</option><option value="scrapped">Dihapuskan Operasional</option></select></label><label data-field="location" class="full">Lokasi Pemasangan *<input class="form-control" name="installation_location"></label><label data-field="reason" class="full">Alasan<input class="form-control" name="reason"></label><label class="full">Work Order / Tiket<input class="form-control" name="work_order_no"></label><label class="full">Keterangan *<textarea class="form-control" name="notes" rows="3" required></textarea></label><div class="full"><label class="form-label">Foto / Dokumen (maks. 10 file, 5 MB/file)</label><div class="tech-file-box" data-filebox><label class="tech-add-file"><i class="bi bi-plus-lg fs-4"></i><span class="small">Tambah</span><input class="d-none" type="file" name="attachments[]" accept="image/*,application/pdf" multiple></label></div></div></div></div><div class="modal-footer"><button type="button" class="btn btn-light" data-bs-dismiss="modal">Batal</button><button class="btn btn-primary" type="submit"><i class="bi bi-check2-circle"></i> Posting</button></div></form></div></div>
<div class="modal fade tech-modal" id="techDocumentModal" data-bs-backdrop="static" tabindex="-1"><div class="modal-dialog modal-xl modal-dialog-centered modal-dialog-scrollable"><div class="modal-content"><div class="modal-header"><h5 class="modal-title">Detail Dokumen Peralatan</h5><button class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body" id="techDocumentBody"></div><div class="modal-footer"><button class="btn btn-light" data-bs-dismiss="modal">Tutup</button></div></div></div></div>
<div class="modal fade tech-modal" id="techPreviewModal" data-bs-backdrop="static" tabindex="-1"><div class="modal-dialog modal-xl modal-dialog-centered"><div class="modal-content"><div class="modal-header"><h5 class="modal-title">Preview Dokumen</h5><button class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body p-2" style="height:min(82vh,850px)" id="techPreviewBody"></div></div></div></div>
<div class="modal fade tech-modal" id="techCustomerGroupModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1"><div class="modal-dialog modal-xl modal-dialog-centered modal-dialog-scrollable"><div class="modal-content"><div class="modal-header"><div><small class="text-muted">DETAIL BARANG CUSTOMER</small><h5 class="modal-title" id="techCustomerGroupTitle">Barang Customer</h5></div><button class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body"><div class="row g-2 align-items-end mb-3"><div class="col-md-8"><label class="form-label">Filter Status</label><select class="form-select" id="techCustomerStatus"><option value="all">Semua Status</option><option value="installed">Terpasang</option><option value="stored">Tersimpan di Customer</option><option value="technician">Dibawa Teknisi</option><option value="inspection">Perlu Pemeriksaan/Perbaikan</option><option value="good">Kondisi Baik</option><option value="damaged">Rusak/Hilang</option></select></div><div class="col-md-4 d-flex gap-2"><button type="button" class="btn btn-primary flex-grow-1" id="techCustomerApplyStatus"><i class="bi bi-funnel"></i> Tampilkan</button><?php if(!empty($perm['export'])):?><button type="button" class="btn btn-outline-danger" id="techCustomerPdf"><i class="bi bi-file-pdf"></i> PDF</button><?php endif?></div></div><div class="tech-table-wrap"><table class="table tech-table align-middle"><thead><tr><th>Barang</th><th>Barcode / Serial</th><th>Pemilik</th><th>Jumlah</th><th>Posisi</th><th>Status</th><th>Kondisi</th></tr></thead><tbody id="techCustomerGroupBody"><tr><td colspan="7" class="tech-empty">Memuat detail...</td></tr></tbody></table></div></div><div class="modal-footer"><button class="btn btn-light" data-bs-dismiss="modal">Tutup</button></div></div></div></div>
<div class="modal fade tech-modal" id="techCustomerNotesModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1"><div class="modal-dialog modal-xl modal-dialog-centered modal-dialog-scrollable"><div class="modal-content"><div class="modal-header"><div><small class="text-muted">HISTORI KETERANGAN BARANG</small><h5 class="modal-title" id="techCustomerNotesTitle">Log Keterangan Customer</h5></div><button class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body"><div class="d-flex justify-content-between align-items-center gap-2 mb-3"><p class="text-muted mb-0">Menampilkan seluruh keterangan per barang dari dokumen operasional.</p><?php if(!empty($perm['export'])):?><a class="btn btn-outline-danger" id="techCustomerNotesPdf" href="#" target="_blank"><i class="bi bi-download"></i> Download PDF</a><?php endif?></div><div class="tech-table-wrap"><table class="table tech-table align-middle" id="techCustomerNotesTable"><thead><tr><th>Tanggal / Dokumen</th><th>Barang</th><th>Barcode / Serial</th><th>Proses</th><th>Qty</th><th>Karyawan</th><th>Keterangan</th></tr></thead><tbody><tr><td colspan="7" class="tech-empty">Memuat log keterangan...</td></tr></tbody></table></div></div><div class="modal-footer"><button class="btn btn-light" data-bs-dismiss="modal">Tutup</button></div></div></div></div>
<script>document.querySelectorAll('select[name="technician_id"],select[name="target_technician_id"],select[name="user_id"]').forEach(function(select){select.classList.add('select-search')});window.TECH_EQUIPMENT=<?=json_encode(array('base'=>base_url(),'permissions'=>$perm,'panel'=>$panel,'targetTechnicians'=>array_map(function($row){return array('id'=>(int)$row->id,'label'=>$row->employee_code.' - '.$row->full_name);},$target_teknisi_list??$teknisi_list)),JSON_UNESCAPED_SLASHES)?>;</script>
<script src="<?=base_url('assets/js/technician-equipment.js')?>?v=<?=filemtime(FCPATH.'assets/js/technician-equipment.js')?>"></script>