From f9a864d63cac198a1b62dc8a8e6c491c3306f4fb Mon Sep 17 00:00:00 2001 From: M_Kececi Date: Fri, 13 Mar 2026 17:17:43 +0300 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ui/src/pages/ProductStockByAttributes.vue | 21 +++++++++++++++++++++ ui/src/pages/ProductStockQuery.vue | 21 +++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/ui/src/pages/ProductStockByAttributes.vue b/ui/src/pages/ProductStockByAttributes.vue index 1aace4b..68d8d90 100644 --- a/ui/src/pages/ProductStockByAttributes.vue +++ b/ui/src/pages/ProductStockByAttributes.vue @@ -1078,10 +1078,24 @@ async function openProductCard(grp1, grp2) { await ensureProductImage(productCode, colorCode, secondColor) let list = Array.isArray(productImageListByCode.value[listKey]) ? productImageListByCode.value[listKey] : [] + console.info('[ProductStockByAttributes][openProductCard] request', { + productCode, + colorCode, + secondColor, + listKey, + cachedListCount: list.length + }) if (!list.length && codeTrim) { try { list = await fetchProductImageList(codeTrim, colorTrim, secondTrim) productImageListByCode.value[listKey] = list + console.info('[ProductStockByAttributes][openProductCard] refetch', { + productCode: codeTrim, + dim1: colorTrim, + dim3: secondTrim, + fetchedCount: list.length, + fileNames: list.map((x) => String(x?.file_name || x?.FileName || '').trim()).filter(Boolean) + }) } catch (err) { console.warn('[ProductStockByAttributes] product card image list refetch failed', { code: codeTrim, @@ -1096,6 +1110,13 @@ async function openProductCard(grp1, grp2) { list.map((item) => resolveProductImageUrlForCarousel(item)) ) const images = imageCandidates.filter((x) => String(x || '').trim() !== '') + console.info('[ProductStockByAttributes][openProductCard] render', { + productCode, + colorCode, + secondColor, + candidateCount: imageCandidates.length, + imageCount: images.length + }) const uniqueImages = Array.from(new Set(images)) if (!uniqueImages.length) { diff --git a/ui/src/pages/ProductStockQuery.vue b/ui/src/pages/ProductStockQuery.vue index f6685a7..c51164d 100644 --- a/ui/src/pages/ProductStockQuery.vue +++ b/ui/src/pages/ProductStockQuery.vue @@ -950,10 +950,24 @@ async function openProductCard(grp1, grp2) { await ensureProductImage(productCode, colorCode, secondColor) let list = Array.isArray(productImageListByCode.value[listKey]) ? productImageListByCode.value[listKey] : [] + console.info('[ProductStockQuery][openProductCard] request', { + productCode, + colorCode, + secondColor, + listKey, + cachedListCount: list.length + }) if (!list.length && codeTrim) { try { list = await fetchProductImageList(codeTrim, colorTrim, secondTrim) productImageListByCode.value[listKey] = list + console.info('[ProductStockQuery][openProductCard] refetch', { + productCode: codeTrim, + dim1: colorTrim, + dim3: secondTrim, + fetchedCount: list.length, + fileNames: list.map((x) => String(x?.file_name || x?.FileName || '').trim()).filter(Boolean) + }) } catch (err) { console.warn('[ProductStockQuery] product card image list refetch failed', { code: codeTrim, @@ -968,6 +982,13 @@ async function openProductCard(grp1, grp2) { list.map((item) => resolveProductImageUrlForCarousel(item)) ) const images = imageCandidates.filter((x) => String(x || '').trim() !== '') + console.info('[ProductStockQuery][openProductCard] render', { + productCode, + colorCode, + secondColor, + candidateCount: imageCandidates.length, + imageCount: images.length + }) const uniqueImages = Array.from(new Set(images)) if (!uniqueImages.length) {