Frontend: asset identifiers, statuses, printer types, UI fixes

- Wire gauge/maintenance refs + identifier toggles into equipment pages.
- Repoint status dropdowns and Settings>Statuses to asset statuses.
- Printer type column/filter; require vendor before model; printer-model picker.
- Per-type identifier labels; printer detail title fallback.
- Fixes: truncate long description cells, opaque supply modal, readable
  dark-mode autofill, drum/waste default colorless.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
cproudlock
2026-06-26 08:35:32 -04:00
parent 0436e8b0af
commit e631564377
22 changed files with 786 additions and 124 deletions

View File

@@ -1,7 +1,7 @@
<template>
<div>
<div class="page-header">
<h2>Machine Statuses</h2>
<h2>Asset Statuses</h2>
<button class="btn btn-primary" @click="openModal()">+ Add Status</button>
</div>
@@ -30,7 +30,7 @@
<span class="color-preview" :style="{ backgroundColor: s.color || '#6c757d' }"></span>
{{ s.color || 'default' }}
</td>
<td>{{ s.description || '-' }}</td>
<td class="cell-truncate" :title="s.description">{{ s.description || '-' }}</td>
<td class="actions">
<button
class="btn btn-secondary btn-sm"
@@ -135,7 +135,7 @@
<div class="modal-body">
<p>Are you sure you want to delete <strong>{{ statusToDelete?.status }}</strong>?</p>
<p style="color: var(--text-light); font-size: 0.875rem;">
Cannot delete if machines are using this status.
Cannot delete if assets are using this status.
</p>
</div>
<div class="modal-footer">
@@ -149,7 +149,7 @@
<script setup>
import { ref, onMounted } from 'vue'
import { statusesApi } from '../../api'
import { assetsApi } from '../../api'
import PaginationBar from '../../components/PaginationBar.vue'
const statuses = ref([])
@@ -184,7 +184,7 @@ async function loadStatuses() {
perpage: perPage.value
}
const response = await statusesApi.list(params)
const response = await assetsApi.statuses.list(params)
statuses.value = response.data.data || []
totalPages.value = response.data.meta?.pagination?.totalpages || response.data.meta?.pagination?.total_pages || 1
} catch (err) {
@@ -235,9 +235,9 @@ async function saveStatus() {
try {
if (editingStatus.value) {
await statusesApi.update(editingStatus.value.statusid, form.value)
await assetsApi.statuses.update(editingStatus.value.statusid, form.value)
} else {
await statusesApi.create(form.value)
await assetsApi.statuses.create(form.value)
}
closeModal()
loadStatuses()
@@ -256,7 +256,7 @@ function confirmDelete(s) {
async function deleteStatus() {
try {
await statusesApi.delete(statusToDelete.value.statusid)
await assetsApi.statuses.delete(statusToDelete.value.statusid)
showDeleteModal.value = false
statusToDelete.value = null
loadStatuses()