fix: 修复图片二次编辑丢失旧图及预览模糊问题
- 国内进港移交编辑:loadData 时同时从 pic/originalPic 构建 FileBean,确保二次编辑保存时原有图片不被覆盖 - 国际事故签证:loadDetail 改用 originalPic URL 作为 FileBean.path, 保证全屏预览取原图而非缩略图;同时修正保存时 pic/originalPic 字段赋值颠倒的问题 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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<FileBean>)
|
||||
.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) {
|
||||
|
||||
@@ -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)
|
||||
// 处理图片列表(同时保留缩略图和原图信息,确保二次编辑时不丢失)
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user