Fix what the last round of device fixes broke, and two dips it missed

This commit is contained in:
2026-08-21 08:50:00 -04:00
parent 4f0399b8ac
commit 5a58d33623
8 changed files with 517 additions and 26 deletions

View File

@@ -24,9 +24,18 @@
type="text"
class="form-control"
:required="isEdit"
:disabled="isEdit"
:disabled="isEdit && !assetNumberMissing"
:placeholder="generatedAssetNumber || 'leave blank to generate from the name'"
/>
<!-- Locked while editing, because an asset number is identity and
changing it silently re-keys the record. The exception is a
record that HAS no number: those exist (an update path used to
accept a blank), the server now rejects a blank on save, and
with the field disabled there was no way to supply one - the
row could not be saved at all until it was fixed elsewhere. -->
<small class="form-hint" v-if="assetNumberMissing">
This device has no asset number. Give it one to save.
</small>
<small class="form-hint" v-if="!isEdit && !form.assetnumber && generatedAssetNumber">
Will be created as <code>{{ generatedAssetNumber }}</code>
</small>
@@ -393,6 +402,10 @@ const generatedAssetNumber = computed(() => {
if (name.toUpperCase().startsWith(prefix + '-')) return name
return `${prefix}-${name}`
})
// True when the record loaded WITHOUT an asset number, which unlocks the field
// so it can be repaired. Captured at load: once typed, the field must stay open.
const assetNumberMissing = ref(false)
const vendors = ref([])
const models = ref([])
@@ -480,6 +493,9 @@ async function loadDevice() {
// Populate form with existing data
form.value.assetnumber = data.assetnumber || ''
// Remember that it arrived empty, so the field stays editable while the
// user types the number this record should have had.
assetNumberMissing.value = !(data.assetnumber || '').trim()
form.value.name = data.name || ''
form.value.serialnumber = data.serialnumber || ''
form.value.gaugelabreference = data.gaugelabreference || ''