Update asset UI for RFID/NFC and consumable stock

This commit is contained in:
Arya Dwi Putra
2025-12-02 19:54:46 +07:00
parent ac93dcbe13
commit 5f4e286b7d
2 changed files with 78 additions and 3 deletions

View File

@@ -117,7 +117,8 @@
<th>Status</th>
<th>Kategori</th>
<th>Lokasi</th>
<th>QR Token</th>
<th>RFID/NFC</th>
<th>Stok</th>
<th class="text-center" style="width: 10%;">Aksi</th>
</tr>
</thead>
@@ -129,7 +130,24 @@
<td><span class="badge bg-primary-transparent text-primary">{{ $asset->status?->name ?: '-' }}</span></td>
<td>{{ $asset->category?->name ?: '-' }}</td>
<td>{{ $asset->location?->name ?: '-' }}</td>
<td><code>{{ $asset->qr_token }}</code></td>
<td>
@if($asset->rfid_tag || $asset->nfc_tag)
<div class="small mb-1">RFID: <code>{{ $asset->rfid_tag ?? '-' }}</code></div>
<div class="small">NFC: <code>{{ $asset->nfc_tag ?? '-' }}</code></div>
@else
<span class="text-muted">-</span>
@endif
</td>
<td>
@if($asset->is_consumable)
<span class="badge bg-warning text-dark">Consumable</span>
@elseif($asset->is_pool)
<span class="badge bg-info text-dark">Pool</span>
@else
<span class="badge bg-secondary-transparent text-secondary">Per Unit</span>
@endif
<div class="small text-muted">Qty: {{ $asset->quantity ?? 1 }} | Ready: {{ $asset->available_quantity ?? $asset->quantity ?? 1 }}</div>
</td>
<td class="text-center">
<div class="btn-list">
<button class="btn btn-sm btn-outline-primary"
@@ -218,7 +236,8 @@
const simpleFields = [
'name','serial_number','description','asset_status_id','asset_class_id','asset_category_id',
'unit_id','department_id','person_in_charge_id','asset_user_id','asset_location_id',
'warranty_id','cost','depreciation_method','useful_life_months','residual_value','capex_opex','vendor_contract_id'
'warranty_id','cost','depreciation_method','useful_life_months','residual_value','capex_opex','vendor_contract_id',
'rfid_tag','nfc_tag','label_template','quantity','available_quantity'
];
simpleFields.forEach((field) => {
@@ -243,6 +262,13 @@
el.value = normalizeDate(payload[field]);
});
const booleanFields = ['is_consumable','is_pool'];
booleanFields.forEach((field) => {
const el = form.querySelector(`[name="${field}"]`);
if (!el) return;
el.value = (payload[field] ? '1' : '0');
});
// metadata not editable via modal here (bisa ditambah kemudian)
});
}

View File

@@ -144,4 +144,53 @@
<label class="form-label">Deskripsi</label>
<textarea name="description" class="form-control" rows="3" placeholder="Keterangan singkat aset"></textarea>
</div>
<div class="col-12">
<hr>
<h6 class="fw-semibold mb-2">Identifikasi & Label</h6>
</div>
<div class="col-md-4">
<label class="form-label">RFID Tag</label>
<input type="text" name="rfid_tag" class="form-control" placeholder="mis: RFID-00001">
</div>
<div class="col-md-4">
<label class="form-label">NFC Tag</label>
<input type="text" name="nfc_tag" class="form-control" placeholder="mis: NFC-00001">
</div>
<div class="col-md-4">
<label class="form-label">Template Label</label>
<select name="label_template" class="form-select">
<option value="">-- Pilih --</option>
<option value="default">Default</option>
<option value="small">Small</option>
<option value="large">Large</option>
</select>
</div>
<div class="col-12">
<hr>
<h6 class="fw-semibold mb-2">Stok & Pool</h6>
</div>
<div class="col-md-4">
<label class="form-label">Jenis</label>
<select name="is_consumable" class="form-select">
<option value="0">Non-consumable</option>
<option value="1">Consumable / Habis Pakai</option>
</select>
</div>
<div class="col-md-4">
<label class="form-label">Quantity</label>
<input type="number" min="1" name="quantity" class="form-control" value="1">
</div>
<div class="col-md-4">
<label class="form-label">Tersedia</label>
<input type="number" min="0" name="available_quantity" class="form-control" value="1">
</div>
<div class="col-md-4">
<label class="form-label">Pool / Pinjaman</label>
<select name="is_pool" class="form-select">
<option value="0">Tidak</option>
<option value="1">Ya, aset pool</option>
</select>
</div>
</div>