From 7bc0929de16396ed06459872c8d0fb7cd7f30b0c Mon Sep 17 00:00:00 2001
From: 18034727885 <973609879@qq.com>
Date: 星期三, 15 四月 2026 21:14:45 +0800
Subject: [PATCH] 修复问题

---
 app/src/main/java/com/xw/yunwei/net/WorkRepository.kt                       |   10 +++--
 app/src/main/res/layout/item_picture_operation.xml                          |    6 +-
 common/src/main/java/com/xw/common/utils/GlideEngine.java                   |    3 +
 app/src/main/java/com/xw/yunwei/net/WorkApi.kt                              |    2 
 app/src/main/java/com/xw/yunwei/ui/work/site/viewmodel/SiteErrorUploadVM.kt |   45 ++++++++++++++--------
 gradle/wrapper/gradle-wrapper.properties                                    |    6 +-
 app/src/main/java/com/xw/yunwei/ui/work/site/SiteErrorUploadActivity.kt     |   14 ++++++-
 7 files changed, 56 insertions(+), 30 deletions(-)

diff --git a/app/src/main/java/com/xw/yunwei/net/WorkApi.kt b/app/src/main/java/com/xw/yunwei/net/WorkApi.kt
index bd6fd63..60ef704 100644
--- a/app/src/main/java/com/xw/yunwei/net/WorkApi.kt
+++ b/app/src/main/java/com/xw/yunwei/net/WorkApi.kt
@@ -137,5 +137,5 @@
 
     /* 现场情况上报 */
     @POST("operation/maintenance-app/api/v1/pointSituationReport/addPointSituationReport")
-    fun addPointSituationReport(@Body params: Map<String, Any>): Call<HttpResponse<Any>>
+    fun addPointSituationReport(@Body params: RequestBody): Call<HttpResponse<Any>>
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/xw/yunwei/net/WorkRepository.kt b/app/src/main/java/com/xw/yunwei/net/WorkRepository.kt
index 81b2eb1..138b71b 100644
--- a/app/src/main/java/com/xw/yunwei/net/WorkRepository.kt
+++ b/app/src/main/java/com/xw/yunwei/net/WorkRepository.kt
@@ -6,6 +6,7 @@
 import com.xw.yunwei.model.CheckRecordModel
 import com.xw.yunwei.model.MaintainRecordModel
 import com.xw.yunwei.model.SiteModel
+import com.xw.yunwei.model.UploadModel
 
 class WorkRepository(private val api: WorkApi) {
 
@@ -62,14 +63,15 @@
         work: Boolean,
         model: SiteModel,
         sceneDescription: String,
-        scenePhoto: List<String>,//现场照片JSON数组
-    ): Any? {
+        scenePhoto: MutableList<UploadModel>,
+    ): Boolean {
         val map = mapOf<String, Any>(
             "fieldSituation" to if (work) 1 else 2,//现场情况(1=正常,2=异常)
             "pointId" to model.id.toString(),//点位id
             "sceneDescription" to sceneDescription,//现场情况说明
-            "scenePhoto" to GsonUtils.toJson(scenePhoto),
+            "scenePhoto" to GsonUtils.toJson(scenePhoto),//现场照片JSON数组
         )
-        return api.addPointSituationReport(map).interceptAwait()
+        api.addPointSituationReport(getBody(map)).interceptAwait()
+        return true
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/xw/yunwei/ui/work/site/SiteErrorUploadActivity.kt b/app/src/main/java/com/xw/yunwei/ui/work/site/SiteErrorUploadActivity.kt
index e3c4989..769ee00 100644
--- a/app/src/main/java/com/xw/yunwei/ui/work/site/SiteErrorUploadActivity.kt
+++ b/app/src/main/java/com/xw/yunwei/ui/work/site/SiteErrorUploadActivity.kt
@@ -7,6 +7,7 @@
 import androidx.core.widget.addTextChangedListener
 import androidx.recyclerview.widget.GridLayoutManager
 import com.xw.common.base.BaseActivity
+import com.xw.common.utils.BindUtils.getUrl
 import com.xw.common.utils.GlideEngine
 import com.xw.yunwei.BR
 import com.xw.yunwei.R
@@ -14,6 +15,7 @@
 import com.xw.yunwei.model.SiteModel
 import com.xw.yunwei.ui.work.site.adapter.PictureOperationAdapter
 import com.xw.yunwei.ui.work.site.viewmodel.SiteErrorUploadVM
+import org.json.JSONArray
 
 class SiteErrorUploadActivity : BaseActivity<ActivitySiteErrorUploadBinding, SiteErrorUploadVM>() {
     companion object {
@@ -75,7 +77,7 @@
                 R.drawable.shape_gray11_bg_4
             }
         )
-        binding.tvWork.setTextColor(
+        binding.tvError.setTextColor(
             ContextCompat.getColor(
                 this,
                 if (viewModel.working.value == false) {
@@ -97,7 +99,15 @@
     override fun setObservable() {
         super.setObservable()
         viewModel.model.observe(this) {
-            GlideEngine.createGlideEngine().load(binding.ivPicture, it.pointPictures, 0, 0, 4f)
+            var url = ""
+            try {
+                url = JSONArray(it.pointPictures).get(0).toString().getUrl()
+            } catch (e: Exception) {
+                e.printStackTrace()
+            } finally {
+                GlideEngine.createGlideEngine()
+                    .load(binding.ivPicture, url, R.mipmap.img_site_bg, R.mipmap.img_site_bg, 4f)
+            }
             binding.tvTitle.text = it.pointName
             binding.tvDetail.text = it.pointAddress
         }
diff --git a/app/src/main/java/com/xw/yunwei/ui/work/site/viewmodel/SiteErrorUploadVM.kt b/app/src/main/java/com/xw/yunwei/ui/work/site/viewmodel/SiteErrorUploadVM.kt
index da9025a..6cebc4d 100644
--- a/app/src/main/java/com/xw/yunwei/ui/work/site/viewmodel/SiteErrorUploadVM.kt
+++ b/app/src/main/java/com/xw/yunwei/ui/work/site/viewmodel/SiteErrorUploadVM.kt
@@ -5,6 +5,7 @@
 import android.content.Context
 import android.view.View
 import androidx.core.net.toUri
+import androidx.fragment.app.FragmentActivity
 import androidx.lifecycle.MutableLiveData
 import com.blankj.utilcode.util.UriUtils
 import com.luck.picture.lib.basic.PictureSelector
@@ -14,11 +15,13 @@
 import com.luck.picture.lib.interfaces.OnResultCallbackListener
 import com.xw.common.CommonDialog
 import com.xw.common.base.BaseViewModel
+import com.xw.common.base.ShowImgListDialog
 import com.xw.common.utils.GlideEngine
 import com.xw.common.utils.PictureCompressEngine
 import com.xw.common.utils.ToastUtilCommon
 import com.xw.yunwei.R
 import com.xw.yunwei.model.SiteModel
+import com.xw.yunwei.model.UploadModel
 import com.xw.yunwei.net.CommonRepository
 import com.xw.yunwei.net.WorkRepository
 import okhttp3.MediaType.Companion.toMediaType
@@ -57,7 +60,7 @@
         val list = operationPictures.value ?: mutableListOf()
         list.add(url)
         refreshPictures(list)
-        operationPictures.postValue(list)
+        operationPictures.postValue(list.toMutableList())
     }
 
     //移除图片
@@ -65,7 +68,7 @@
         val list = operationPictures.value ?: mutableListOf()
         list.removeAt(position)
         refreshPictures(list)
-        operationPictures.postValue(list)
+        operationPictures.postValue(list.toMutableList())
     }
 
     //刷新图片
@@ -83,6 +86,14 @@
         val element = list.elementAtOrNull(position) ?: return
         if (element.isEmpty()) {
             operatePictureFromDevice(context)
+        } else {
+            val backUp = list.toMutableList()
+            backUp.removeIf { it.isEmpty() }
+            ShowImgListDialog(
+                context as FragmentActivity,
+                backUp,
+                position
+            ).show()
         }
     }
 
@@ -99,7 +110,7 @@
         PictureSelector.create(context)
             .openGallery(SelectMimeType.ofImage())
             .setImageEngine(GlideEngine.createGlideEngine())
-            .setMaxSelectNum(1)
+            .setMaxSelectNum(pictureMax.value ?: 1)
             .setImageSpanCount(4)
             .isPreviewImage(true)
             .isDisplayCamera(false)
@@ -134,9 +145,8 @@
 
     }
 
-    private fun uploadFile(files: MutableList<String>, succ: () -> Unit) {
-        files.removeIf { it.isEmpty() }
-        val result = files.find { !it.startsWith("http") }
+    private fun uploadFile(files: MutableList<Pair<String, UploadModel?>>, succ: () -> Unit) {
+        val result = files.find { it.second == null }
         if (result == null) {
             succ()
         } else {
@@ -145,13 +155,13 @@
                 dismissDialog()
                 isUploading = false
             }) {
-                val file = File(result)
+                val file = File(result.first)
                 val fileRequestBody = file.asRequestBody("image/jpg".toMediaType())
                 val mBuilder = MultipartBody.Builder()
                 mBuilder.addFormDataPart("file", file.name, fileRequestBody)
                 mBuilder.setType(MultipartBody.FORM)
                 val data = commonRepository.uploadFile(mBuilder.build())
-                files[files.indexOf(result)] = data?.url ?: ""
+                files[files.indexOf(result)] = result.first to data
                 uploadFile(files, succ)
             }
         }
@@ -170,25 +180,28 @@
         val list = operationPictures.value ?: mutableListOf()
         list.removeIf { it.isEmpty() }
         if (list.count { !it.startsWith("http") } > 0) {
-            uploadFile(list) { submit(list) }
+            val result = list.map { Pair<String, UploadModel?>(it, null) }.toMutableList()
+            uploadFile(result) {
+                result.removeIf { it.second == null }
+                submit(result.map { it.second!! }.toMutableList())
+            }
             return
         }
-        submit(list)
+        submit(mutableListOf())
     }
 
     //提交
-    private fun submit(urls: MutableList<String>) {
+    private fun submit(urls: MutableList<UploadModel>) {
         launchRequest {
             workRepository.addPointSituationReport(
                 working.value!!,
                 model.value!!,
                 desc.value ?: "",
                 urls
-            )
-                ?.let {
-                    ToastUtilCommon.showSuc("提交成功")
-                    finish()
-                }
+            ).let {
+                ToastUtilCommon.showSuc("提交成功")
+                finish()
+            }
         }
     }
 }
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_picture_operation.xml b/app/src/main/res/layout/item_picture_operation.xml
index 74b8566..7be74a1 100644
--- a/app/src/main/res/layout/item_picture_operation.xml
+++ b/app/src/main/res/layout/item_picture_operation.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:padding="@dimen/dp_5">
+    android:layout_width="@dimen/dp_69"
+    android:layout_height="@dimen/dp_69"
+    android:padding="@dimen/dp_3">
 
     <ImageView
         android:id="@+id/iv_picture"
diff --git a/common/src/main/java/com/xw/common/utils/GlideEngine.java b/common/src/main/java/com/xw/common/utils/GlideEngine.java
index 8dcaaf0..8f504e0 100644
--- a/common/src/main/java/com/xw/common/utils/GlideEngine.java
+++ b/common/src/main/java/com/xw/common/utils/GlideEngine.java
@@ -3,6 +3,7 @@
 import android.content.Context;
 import android.widget.ImageView;
 
+import androidx.annotation.DrawableRes;
 import androidx.annotation.IdRes;
 import androidx.annotation.NonNull;
 
@@ -115,7 +116,7 @@
      */
     public void load(@NonNull ImageView imageView,
                      String url,
-                     @IdRes int error, @IdRes int placeHolder,
+                     @DrawableRes int error, @DrawableRes int placeHolder,
                      float radius) {
         float value = radius * imageView.getContext().getResources().getDisplayMetrics().density;
         Glide.with(imageView)
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index a2bed66..b1db9f3 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,9 +1,9 @@
 #Wed Feb 11 09:59:09 CST 2026
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionSha256Sum=a17ddd85a26b6a7f5ddb71ff8b05fc5104c0202c6e64782429790c933686c806
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
-networkTimeout=10000
+#distributionSha256Sum=a17ddd85a26b6a7f5ddb71ff8b05fc5104c0202c6e64782429790c933686c806
+distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.13-bin.zip
+#networkTimeout=10000
 validateDistributionUrl=true
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists

--
Gitblit v1.7.1