From c2ded572eff614cf2a259e263e60a5e8feb3e676 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期四, 23 四月 2026 16:52:30 +0800
Subject: [PATCH] fix: 销售订单发货状态修改

---
 src/views/salesManagement/deliveryLedger/index.vue |   54 +++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 35 insertions(+), 19 deletions(-)

diff --git a/src/views/salesManagement/deliveryLedger/index.vue b/src/views/salesManagement/deliveryLedger/index.vue
index 0d0ea70..7e96f23 100644
--- a/src/views/salesManagement/deliveryLedger/index.vue
+++ b/src/views/salesManagement/deliveryLedger/index.vue
@@ -193,10 +193,12 @@
 
         <div class="detail-images" v-if="detailImages.length">
           <div class="detail-images-title">鍙戣揣鍥剧墖</div>
-          <ImagePreview
-            :src="detailImages.map(i => i.url).join(',')"
-            width="120px"
-            height="120px"
+          <el-image
+            v-for="img in detailImages"
+            :key="img.url"
+            :src="img.url"
+            :preview-src-list="detailImages.map(i => i.url)"
+            fit="cover"
             class="detail-image"
           />
         </div>
@@ -243,30 +245,44 @@
 const detailRow = ref(null);
 const detailImages = ref([]);
 
+const getFileAccessUrl = (file = {}) => {
+  if (file?.link) {
+    if (String(file.link).startsWith('http')) return file.link;
+    return normalizeFileUrl(file.link);
+  }
+  return normalizeFileUrl(file?.url || '');
+};
+
 const normalizeFileUrl = (rawUrl = '') => {
   let fileUrl = rawUrl || '';
 
   if (fileUrl && fileUrl.indexOf('\\') > -1) {
-    const lowerPath = fileUrl.toLowerCase();
-    const uploadPathIndex = lowerPath.indexOf('uploadpath');
-
-    if (uploadPathIndex > -1) {
-      fileUrl = fileUrl
-        .substring(uploadPathIndex)
-        .replace(/\\/g, '/');
-    } else {
-      fileUrl = fileUrl.replace(/\\/g, '/');
-    }
+    fileUrl = fileUrl.replace(/\\/g, '/');
   }
-  fileUrl = fileUrl.replace(/^\/?uploadPath/, '/profile');
 
-  if (!fileUrl.startsWith('http')) {
+  const lowerPath = fileUrl.toLowerCase();
+
+  const uploadPathIndex = lowerPath.indexOf('/uploadpath/');
+  if (uploadPathIndex > -1) {
+    fileUrl = '/profile' + fileUrl.substring(uploadPathIndex + '/uploadpath'.length);
+  }
+
+  const fileRootIndex = fileUrl.toLowerCase().indexOf('/file/');
+  if (!fileUrl.startsWith('/profile/') && fileRootIndex > -1) {
+    fileUrl = '/profile' + fileUrl.substring(fileRootIndex + '/file'.length);
+  }
+
+  if (!fileUrl.startsWith('http') && fileUrl.toLowerCase().startsWith('profile/')) {
+    fileUrl = '/' + fileUrl;
+  }
+
+  if (fileUrl && !fileUrl.startsWith('http')) {
     if (!fileUrl.startsWith('/')) fileUrl = '/' + fileUrl;
     fileUrl = javaApi + fileUrl;
   }
-
   return fileUrl;
 };
+
 // 涓婁紶閰嶇疆
 const upload = reactive({
   // 涓婁紶鐨勫湴鍧�
@@ -379,7 +395,7 @@
     // 濡傛灉鏈夊浘鐗囷紝灏� commonFileList 杞崲涓烘枃浠跺垪琛ㄦ牸寮�
     if (row.commonFileList && Array.isArray(row.commonFileList) && row.commonFileList.length > 0) {
       deliveryFileList.value = row.commonFileList.map((file, index) => {
-        const fileUrl = normalizeFileUrl(file.url || '');
+        const fileUrl = getFileAccessUrl(file);
         
         return {
           uid: file.id || Date.now() + index,
@@ -421,7 +437,7 @@
   detailRow.value = row || null;
   const list = Array.isArray(row?.commonFileList) ? row.commonFileList : [];
   detailImages.value = list
-    .map((f) => ({ url: normalizeFileUrl(f?.url || '') }))
+    .map((f) => ({ url: getFileAccessUrl(f) }))
     .filter((i) => !!i.url);
   detailDialogVisible.value = true;
 };

--
Gitblit v1.9.3