From 60478327e22cd1743fb8a7f8e6d04dfa46d9cd64 Mon Sep 17 00:00:00 2001 From: YANG JIANKUAN Date: Wed, 15 Apr 2026 15:02:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E4=BA=8C=E6=AC=A1=E7=BC=96=E8=BE=91=E4=B8=A2=E5=A4=B1=E6=97=A7?= =?UTF-8?q?=E5=9B=BE=E5=8F=8A=E9=A2=84=E8=A7=88=E6=A8=A1=E7=B3=8A=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 国内进港移交编辑:loadData 时同时从 pic/originalPic 构建 FileBean,确保二次编辑保存时原有图片不被覆盖 - 国际事故签证:loadDetail 改用 originalPic URL 作为 FileBean.path, 保证全屏预览取原图而非缩略图;同时修正保存时 pic/originalPic 字段赋值颠倒的问题 Co-Authored-By: Claude Opus 4.6 --- .../IntImpAccidentVisaEditViewModel.kt | 27 +++++++++---------- .../yiku/handover/GnjYiKuHandoverViewModel.kt | 23 ++++++++++++---- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpAccidentVisaEditViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpAccidentVisaEditViewModel.kt index 16acade..663c594 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpAccidentVisaEditViewModel.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpAccidentVisaEditViewModel.kt @@ -144,20 +144,19 @@ class IntImpAccidentVisaEditViewModel : BaseViewModel(), IOnItemClickListener { onSuccess = { dataBean.value = it.data ?: GjAccidentVisaEditBean() - // 渲染图片 + // 渲染图片:path 取原图 URL 确保预览清晰,url 取缩略图用于提交 val bean = dataBean.value!! - val picList = bean.pic.split(",") - .filter { url -> url.isNotEmpty() } - .map { url -> FileBean(MediaUtil.fillUrl(url), url) } - val originalList = bean.originalPic.split(",") - .filter { url -> url.isNotEmpty() } - .map { url -> FileBean(MediaUtil.fillUrl(url)) } - for ((index, fileBean) in picList.withIndex()) { - if (index < originalList.size) { - picList[index].originalPic = originalList[index].path - } + val picList = bean.pic.split(",").filter { it.isNotEmpty() } + val originalList = bean.originalPic.split(",").filter { it.isNotEmpty() } + val images = picList.mapIndexed { index, picUrl -> + val originalUrl = originalList.getOrElse(index) { picUrl } + FileBean( + path = MediaUtil.fillUrl(originalUrl), + url = picUrl, + originalPic = originalUrl + ) } - rv?.commonAdapter()?.loadMore(picList) + rv?.commonAdapter()?.loadMore(images) // 详情模式下无图片时显示占位提示 if (isDetailMode.value == true && picList.isEmpty()) { @@ -292,8 +291,8 @@ class IntImpAccidentVisaEditViewModel : BaseViewModel(), IOnItemClickListener { val list = (rv?.commonAdapter()?.items as List) .filter { it.path.isNotEmpty() } bean.picNumber = list.size.toString() - bean.originalPic = list.joinToString(separator = ",") { MediaUtil.removeUrl(it.url) } - bean.pic = list.joinToString(separator = ",") { MediaUtil.removeUrl(it.originalPic) } + bean.pic = list.joinToString(separator = ",") { MediaUtil.removeUrl(it.url) } + bean.originalPic = list.joinToString(separator = ",") { MediaUtil.removeUrl(it.originalPic) } bean.idFlag = "1" if (pageType.value == DetailsPageType.Add) { diff --git a/module_gnj/src/main/java/com/lukouguoji/gnj/page/yiku/handover/GnjYiKuHandoverViewModel.kt b/module_gnj/src/main/java/com/lukouguoji/gnj/page/yiku/handover/GnjYiKuHandoverViewModel.kt index fde767c..28fc2e6 100644 --- a/module_gnj/src/main/java/com/lukouguoji/gnj/page/yiku/handover/GnjYiKuHandoverViewModel.kt +++ b/module_gnj/src/main/java/com/lukouguoji/gnj/page/yiku/handover/GnjYiKuHandoverViewModel.kt @@ -62,10 +62,23 @@ class GnjYiKuHandoverViewModel : BaseViewModel(), IOnItemClickListener { val bean = it.data ?: GnjYiKuBean() dataBean.value = bean - // 处理图片列表(拼接完整 URL) - val images = bean.getImageList().map { url -> - FileBean(path = MediaUtil.fillUrl(url), url = url) - }.toMutableList() + // 处理图片列表(同时保留缩略图和原图信息,确保二次编辑时不丢失) + val picList = bean.pic.split(",").filter { it.isNotEmpty() } + val originalPicList = bean.originalPic.split(",").filter { it.isNotEmpty() } + val images = if (picList.isNotEmpty()) { + picList.mapIndexed { index, picUrl -> + val originalUrl = originalPicList.getOrElse(index) { picUrl } + FileBean( + path = MediaUtil.fillUrl(originalUrl), + url = picUrl, + originalPic = originalUrl + ) + }.toMutableList() + } else { + originalPicList.map { url -> + FileBean(path = MediaUtil.fillUrl(url), url = url, originalPic = url) + }.toMutableList() + } // 编辑模式添加空 FileBean 用于显示"添加照片"按钮 if (pageType.value == DetailsPageType.Modify) { @@ -75,7 +88,7 @@ class GnjYiKuHandoverViewModel : BaseViewModel(), IOnItemClickListener { imageList.value = images // 详情模式下无图片时显示占位提示 - if (pageType.value == DetailsPageType.Details && bean.getImageList().isEmpty()) { + if (pageType.value == DetailsPageType.Details && images.isEmpty()) { showNoImage.value = true } }