From 31139267d12dd59c2edf0d4514919a268a5d4ab2 Mon Sep 17 00:00:00 2001 From: cproudlock Date: Mon, 20 Jul 2026 11:14:00 -0400 Subject: [PATCH] Fix model images 404 under a subpath mount (withBase) Model image URLs are root-relative (/api/models/image/...), so on an /ops subpath deploy the raw resolved to the server root and 404'd. Wrap every model-image src in withBase(): machine/printer/PC/network detail heroes, the models settings preview, and the machine-badge / asset-label print pages. withBase leaves external http(s)/data URLs untouched. --- frontend/src/views/print/AssetLabel.vue | 3 ++- frontend/src/views/print/MachineBadge.vue | 2 +- frontend/src/views/settings/ModelsList.vue | 3 ++- plugins/computers/frontend/views/PCDetail.vue | 3 ++- plugins/machines/frontend/views/MachineDetail.vue | 3 ++- plugins/network/frontend/views/NetworkDeviceDetail.vue | 3 ++- plugins/printers/frontend/views/PrinterDetail.vue | 3 ++- 7 files changed, 13 insertions(+), 7 deletions(-) diff --git a/frontend/src/views/print/AssetLabel.vue b/frontend/src/views/print/AssetLabel.vue index 53760d4..14604f9 100644 --- a/frontend/src/views/print/AssetLabel.vue +++ b/frontend/src/views/print/AssetLabel.vue @@ -131,6 +131,7 @@ import { useRoute } from 'vue-router' import JsBarcode from 'jsbarcode' import { renderQrDataUrl } from './qrLogo' import { getSetting } from '@/utils/siteSettings' +import { withBase } from '@/utils/basePath' import { TYPE_CONFIG, hasLocationType, resolveDefaultEncodes, effectiveEncodes as effEncodes, resolveCodeText as resolveText, captionFor, @@ -171,7 +172,7 @@ const cardTitle = computed(() => { const imageUrl = computed(() => { const ext = extension.value - return (ext && ext.imageurl) ? ext.imageurl : null + return (ext && ext.imageurl) ? withBase(ext.imageurl) : null }) // Small identity table shown on the card. diff --git a/frontend/src/views/print/MachineBadge.vue b/frontend/src/views/print/MachineBadge.vue index ddf0f86..49b6f5d 100644 --- a/frontend/src/views/print/MachineBadge.vue +++ b/frontend/src/views/print/MachineBadge.vue @@ -54,7 +54,7 @@ const modelName = computed(() => { const imageUrl = computed(() => { if (!machine.value) return null const img = machine.value.machine?.imageurl - if (img) return img.startsWith('/') ? img : `/images/models/machines/${img}` + if (img) return withBase(img.startsWith('/') ? img : `/images/models/machines/${img}`) return null }) diff --git a/frontend/src/views/settings/ModelsList.vue b/frontend/src/views/settings/ModelsList.vue index 7312051..82e60e5 100644 --- a/frontend/src/views/settings/ModelsList.vue +++ b/frontend/src/views/settings/ModelsList.vue @@ -136,7 +136,7 @@
- Model image + Model image