18034727885
2026-06-26 130a27657ef65e734b18458f13b92dd4b176b1f0
修复问题
4个文件已添加
19个文件已修改
165 ■■■■■ 已修改文件
app/src/main/java/com/xw/yunwei/extension/NumExtension.kt 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/MainVM.kt 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/task/accident/handle/AccidentProcessVM.kt 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/task/create/CreateTaskActivity.kt 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/task/selectCar/SelectCarActivity.kt 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/user/mine/scheduling/adapter/WeekDayAdapter.kt 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/work/car/detail/CarDetailVM.kt 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/work/car/manage/CarManageActivity.kt 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/work/checkInMission/CheckInMissionPointsListActivity.kt 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/work/checkInMission/CruiseCheckInActivity.kt 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/work/checkInMission/CruiseCheckInOperationActivity.kt 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/work/checkInMission/RoutePlanningActivity.kt 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/work/site/SiteNavActivity.kt 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/work/site/adapter/PictureOperationAdapter.kt 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_cruise_check_in_operation.xml 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common/src/main/java/com/xw/common/CommonDialog.kt 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common/src/main/java/com/xw/common/base/ImageSelectAdapter.kt 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common/src/main/java/com/xw/common/viewAdapter/ViewAdapter.kt 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common/src/main/res/drawable/shape_black_bg_8.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common/src/main/res/mipmap-xhdpi/icon_default2.png 补丁 | 查看 | 原始文档 | blame | 历史
common/src/main/res/mipmap-xhdpi/icon_default3.png 补丁 | 查看 | 原始文档 | blame | 历史
common/src/main/res/mipmap-xhdpi/icon_default4.png 补丁 | 查看 | 原始文档 | blame | 历史
common/src/main/res/mipmap-xhdpi/icon_default5.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/extension/NumExtension.kt
@@ -51,7 +51,7 @@
    ContextCompat.getColor(context, this)
//Drawable资源id转Drawable
fun Int.drawableIdToColorValue(context: Context): Drawable? =
fun Int.drawableIdToDrawable(context: Context): Drawable? =
    ContextCompat.getDrawable(context, this)
//扩展函数 显示统计数量
app/src/main/java/com/xw/yunwei/ui/MainVM.kt
@@ -7,7 +7,9 @@
import com.xw.yunwei.MyApp
import com.xw.yunwei.R
import com.xw.yunwei.model.AppVersionModel
import com.xw.yunwei.model.SwitchTabTask
import com.xw.yunwei.net.UserRepository
import org.greenrobot.eventbus.EventBus
import org.koin.core.component.inject
class MainVM(application: Application) : BaseViewModel(application) {
@@ -24,7 +26,10 @@
    val onClick = View.OnClickListener {
        when (it.id) {
            R.id.navWork -> changeSelectFragmentIndex(0)
            R.id.navTask -> changeSelectFragmentIndex(1)
            R.id.navTask -> {
                changeSelectFragmentIndex(1)
                EventBus.getDefault().post(SwitchTabTask(1))
            }
            R.id.navMine -> changeSelectFragmentIndex(2)
        }
    }
app/src/main/java/com/xw/yunwei/ui/task/accident/handle/AccidentProcessVM.kt
@@ -16,6 +16,7 @@
import com.xw.yunwei.net.CommonRepository
import com.xw.yunwei.net.TaskRepository
import com.xw.yunwei.ui.MainActivity
import kotlinx.coroutines.delay
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.MultipartBody
import okhttp3.RequestBody.Companion.asRequestBody
@@ -150,8 +151,8 @@
                map["disposalImage"] = "${adapters[2].data.map { it.url }}"
                map["taskTypeId"] = getSelectType()
                taskRepository.handleVehicleAccident(map)
                ToastUtilCommon.showSuc("提交成功,事故已归档")
                runOnMainThread { ToastUtilCommon.showSuc("提交成功,事故已归档") }
                delay(500)
                startActivity(MainActivity::class.java)
            }
        }
app/src/main/java/com/xw/yunwei/ui/task/create/CreateTaskActivity.kt
@@ -388,7 +388,7 @@
        } else {
            CommonDialog.showTipsDialog(
                this,
                "是否保存当前事故数据",
                "保存当前已填写内容,更换车辆后将不用重新填写,是否保存?",
                "不保存",
                "保存",
                leftBlock = {
app/src/main/java/com/xw/yunwei/ui/task/selectCar/SelectCarActivity.kt
@@ -22,7 +22,7 @@
import com.xw.yunwei.databinding.DialogCarFilterBinding
import com.xw.yunwei.extension.colorIdToColorValue
import com.xw.yunwei.extension.dpToPx
import com.xw.yunwei.extension.drawableIdToColorValue
import com.xw.yunwei.extension.drawableIdToDrawable
import com.xw.yunwei.model.CarModel
import com.xw.yunwei.model.FinishPage
import com.xw.yunwei.ui.task.create.CreateTaskActivity
@@ -82,7 +82,7 @@
        binding.filter.setCompoundDrawables(
            null,
            null,
            (if (viewModel.hadFilter()) R.drawable.svg_filter2 else R.drawable.svg_filter).drawableIdToColorValue(
            (if (viewModel.hadFilter()) R.drawable.svg_filter2 else R.drawable.svg_filter).drawableIdToDrawable(
                this
            )?.apply {
                setBounds(
app/src/main/java/com/xw/yunwei/ui/user/mine/scheduling/adapter/WeekDayAdapter.kt
@@ -21,7 +21,7 @@
        if (split.size == 3) {
            calendar.apply {
                set(Calendar.YEAR, split[0].toInt())
                set(Calendar.MONTH, split[1].toInt())
                set(Calendar.MONTH, split[1].toInt() - 1)
                set(Calendar.DAY_OF_MONTH, split[2].toInt())
            }.also {
                holder.setText(
app/src/main/java/com/xw/yunwei/ui/work/car/detail/CarDetailVM.kt
@@ -66,7 +66,7 @@
                    checkCould()
                }
                checkTrunkStatus(info.id.toString()) {
                    carInfo.postValue(info.copy(hadTrunkOpened = it.toString()))
                    hadTrunkOpened.postValue(it == 1)
                }
            }
        }
app/src/main/java/com/xw/yunwei/ui/work/car/manage/CarManageActivity.kt
@@ -30,7 +30,7 @@
import com.xw.yunwei.databinding.DialogCarFilterBinding
import com.xw.yunwei.extension.colorIdToColorValue
import com.xw.yunwei.extension.dpToPx
import com.xw.yunwei.extension.drawableIdToColorValue
import com.xw.yunwei.extension.drawableIdToDrawable
import com.xw.yunwei.extension.hideKeyboardAndClearFocus
import com.xw.yunwei.model.CarModel
import com.xw.yunwei.ui.work.AMapFragment
@@ -94,7 +94,7 @@
        binding.filter.setCompoundDrawables(
            null,
            null,
            (if (viewModel.hadFilter()) R.drawable.svg_filter2 else R.drawable.svg_filter).drawableIdToColorValue(
            (if (viewModel.hadFilter()) R.drawable.svg_filter2 else R.drawable.svg_filter).drawableIdToDrawable(
                this
            )?.apply {
                setBounds(
app/src/main/java/com/xw/yunwei/ui/work/checkInMission/CheckInMissionPointsListActivity.kt
@@ -59,7 +59,9 @@
        }
        adapter.setOnItemChildClickListener { adapter, view, i ->
            if (viewModel.pointsList.value!![i].hadCheckIn()) {
                viewModel.showCheckInSuccessDialog(this, viewModel.pointsList.value!![i])
                //viewModel.showCheckInSuccessDialog(this, viewModel.pointsList.value!![i])
                startActivity(CruiseCheckInOperationActivity::class.java,
                    CruiseCheckInOperationActivity.getParams(viewModel.id,viewModel.pointsList.value!![i],false))
                return@setOnItemChildClickListener
            }
            viewModel.routePlanning(i)
app/src/main/java/com/xw/yunwei/ui/work/checkInMission/CruiseCheckInActivity.kt
@@ -7,12 +7,15 @@
import androidx.core.os.bundleOf
import androidx.core.view.isVisible
import com.amap.api.maps.AMap
import com.amap.api.maps.AMapUtils
import com.amap.api.maps.CameraUpdateFactory
import com.amap.api.maps.model.BitmapDescriptorFactory
import com.amap.api.maps.model.CameraPosition
import com.amap.api.maps.model.CircleOptions
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.MarkerOptions
import com.amap.api.maps.model.Polyline
import com.amap.api.maps.model.PolylineOptions
import com.amap.api.navi.AMapNavi
import com.amap.api.navi.AMapNaviIndependentRouteListener
import com.amap.api.navi.AMapNaviListener
@@ -92,6 +95,9 @@
    //路线OverLay
    var routeOverLay: RouteOverLay? = null
    //起点/终点回拉线
    private val leaderLines = mutableListOf<Polyline>()
    //上次计算路线起点定位
    var lastCalculateRouteStartLocation: AMapNaviLocation? = null
@@ -596,6 +602,45 @@
            }
            addToMap()
        }
        drawLeaderLines(path)
    }
    //绘制起点/终点的回拉线(人到路线起点、路线终点到建筑内终点)
    private fun drawLeaderLines(naviPath: AMapNaviPath) {
        binding.amapView.map?.also { aMap ->
            leaderLines.forEach { it.remove() }
            leaderLines.clear()
            val coordList = naviPath.coordList ?: return
            if (coordList.isEmpty()) return
            val routeStart = LatLng(coordList.first().latitude, coordList.first().longitude)
            val routeEnd = LatLng(coordList.last().latitude, coordList.last().longitude)
            val lineColor = getResColor(com.xw.common.R.color.gray_6)
            viewModel.startPoint?.coordinate?.also { startLatLng ->
                if (AMapUtils.calculateLineDistance(startLatLng, routeStart) > 5) {
                    aMap.addPolyline(
                        PolylineOptions()
                            .add(startLatLng, routeStart)
                            .width(13f)
                            .color(lineColor)
                            .setDottedLine(true)
                    )?.also { leaderLines.add(it) }
                }
            }
            viewModel.getEndPoint()?.coordinate?.also { endLatLng ->
                if (AMapUtils.calculateLineDistance(routeEnd, endLatLng) > 5) {
                    aMap.addPolyline(
                        PolylineOptions()
                            .add(routeEnd, endLatLng)
                            .width(13f)
                            .color(lineColor)
                            .setDottedLine(true)
                    )?.also { leaderLines.add(it) }
                }
            }
        }
    }
    //初始化marker
app/src/main/java/com/xw/yunwei/ui/work/checkInMission/CruiseCheckInOperationActivity.kt
@@ -2,8 +2,8 @@
import android.os.Bundle
import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
import androidx.core.graphics.drawable.toDrawable
import androidx.core.os.bundleOf
import androidx.core.widget.addTextChangedListener
import androidx.recyclerview.widget.GridLayoutManager
@@ -13,7 +13,7 @@
import com.xw.yunwei.constants.Key
import com.xw.yunwei.databinding.ActivityCruiseCheckInOperationBinding
import com.xw.yunwei.extension.dpToPx
import com.xw.yunwei.extension.drawableIdToColorValue
import com.xw.yunwei.extension.drawableIdToDrawable
import com.xw.yunwei.model.CheckInMissionPointInfo
import com.xw.yunwei.ui.work.checkInMission.viewmodel.CruiseCheckInOperationViewModel
import com.xw.yunwei.ui.work.site.adapter.PictureOperationAdapter
@@ -107,27 +107,20 @@
            }
        )
        binding.tvLabel2.setCompoundDrawables(
            if (viewModel.working.value != true) com.xw.common.R.drawable.svg_must.drawableIdToColorValue(
            (if (viewModel.working.value != true) com.xw.common.R.drawable.svg_must.drawableIdToDrawable(
                this
            )?.apply {
            ) else com.xw.common.R.color.color_transparent.drawableIdToDrawable(this))?.apply {
                setBounds(
                    0,
                    0,
                    8.dpToPx(this@CruiseCheckInOperationActivity),
                    15.dpToPx(this@CruiseCheckInOperationActivity)
                )
            } else null,
            },
            null,
            null,
            null
        )
        binding.flInput.layoutParams =
            (binding.flInput.layoutParams as ConstraintLayout.LayoutParams).apply {
                marginStart =
                    (if (viewModel.working.value == false) 28 else 20).dpToPx(this@CruiseCheckInOperationActivity)
                marginEnd =
                    (if (viewModel.working.value == false) 28 else 20).dpToPx(this@CruiseCheckInOperationActivity)
            }
    }
    override fun setObservable() {
app/src/main/java/com/xw/yunwei/ui/work/checkInMission/RoutePlanningActivity.kt
@@ -7,14 +7,18 @@
import androidx.core.os.bundleOf
import com.amap.api.location.AMapLocation
import com.amap.api.maps.AMap
import com.amap.api.maps.AMapUtils
import com.amap.api.maps.CameraUpdateFactory
import com.amap.api.maps.model.BitmapDescriptorFactory
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.MarkerOptions
import com.amap.api.maps.model.Polyline
import com.amap.api.maps.model.PolylineOptions
import com.amap.api.navi.AMapNavi
import com.amap.api.navi.enums.TransportType
import com.amap.api.navi.enums.TravelStrategy
import com.amap.api.navi.model.AMapCalcRouteResult
import com.amap.api.navi.model.AMapNaviPath
import com.amap.api.navi.model.AMapTravelInfo
import com.amap.api.navi.model.NaviPoi
import com.amap.api.navi.model.RouteOverlayOptions
@@ -68,6 +72,9 @@
    //路线OverLay
    var routeOverLay: RouteOverLay? = null
    //起点/终点回拉线
    private val leaderLines = mutableListOf<Polyline>()
    override fun getBindingVariable() = BR.viewModel
    override fun onCreate(savedInstanceState: Bundle?) {
@@ -459,11 +466,50 @@
            }
            runOnUiThread {
                routeOverLay?.zoomToSpan()
                drawLeaderLines(naviPath)
                initMarker()
            }
        }
    }
    //绘制起点/终点的回拉线(人到路线起点、路线终点到建筑内终点)
    private fun drawLeaderLines(naviPath: AMapNaviPath) {
        binding.mapView.map?.also { aMap ->
            leaderLines.forEach { it.remove() }
            leaderLines.clear()
            val coordList = naviPath.coordList ?: return
            if (coordList.isEmpty()) return
            val routeStart = LatLng(coordList.first().latitude, coordList.first().longitude)
            val routeEnd = LatLng(coordList.last().latitude, coordList.last().longitude)
            val lineColor = ContextCompat.getColor(this, com.xw.common.R.color.gray_6)
            viewModel.startPoint?.coordinate?.also { startLatLng ->
                if (AMapUtils.calculateLineDistance(startLatLng, routeStart) > 5) {
                    aMap.addPolyline(
                        PolylineOptions()
                            .add(startLatLng, routeStart)
                            .width(13f)
                            .color(lineColor)
                            .setDottedLine(true)
                    )?.also { leaderLines.add(it) }
                }
            }
            viewModel.getRoutePlanningEndPoint()?.coordinate?.also { endLatLng ->
                if (AMapUtils.calculateLineDistance(routeEnd, endLatLng) > 5) {
                    aMap.addPolyline(
                        PolylineOptions()
                            .add(routeEnd, endLatLng)
                            .width(13f)
                            .color(lineColor)
                            .setDottedLine(true)
                    )?.also { leaderLines.add(it) }
                }
            }
        }
    }
    //初始化marker
    private fun initMarker() {
        binding.mapView.map?.also {
app/src/main/java/com/xw/yunwei/ui/work/site/SiteNavActivity.kt
@@ -9,7 +9,6 @@
import android.view.animation.DecelerateInterpolator
import android.widget.LinearLayout
import androidx.core.view.isVisible
import androidx.core.view.updatePadding
import androidx.databinding.DataBindingUtil
import androidx.recyclerview.widget.LinearLayoutManager
import com.afollestad.materialdialogs.MaterialDialog
@@ -33,7 +32,7 @@
import com.xw.yunwei.databinding.DialogSiteFilterBinding
import com.xw.yunwei.extension.colorIdToColorValue
import com.xw.yunwei.extension.dpToPx
import com.xw.yunwei.extension.drawableIdToColorValue
import com.xw.yunwei.extension.drawableIdToDrawable
import com.xw.yunwei.extension.hideKeyboardAndClearFocus
import com.xw.yunwei.model.SiteModel
import com.xw.yunwei.ui.work.AMapFragment
@@ -93,7 +92,7 @@
        binding.filter.setCompoundDrawables(
            null,
            null,
            (if (viewModel.hadFilter()) R.drawable.svg_filter2 else R.drawable.svg_filter).drawableIdToColorValue(
            (if (viewModel.hadFilter()) R.drawable.svg_filter2 else R.drawable.svg_filter).drawableIdToDrawable(
                this
            )?.apply {
                setBounds(
app/src/main/java/com/xw/yunwei/ui/work/site/adapter/PictureOperationAdapter.kt
@@ -20,7 +20,7 @@
            GlideEngine.createGlideEngine().load(
                imageView,
                item,
                0, 0,
                com.xw.common.R.mipmap.icon_default5, com.xw.common.R.mipmap.icon_default5,
                4f
            )
        }
app/src/main/res/layout/activity_cruise_check_in_operation.xml
@@ -239,7 +239,7 @@
                    android:id="@+id/tv_label3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="@dimen/dp_20"
                    android:layout_marginStart="@dimen/dp_28"
                    android:layout_marginTop="@dimen/dp_20"
                    android:text="现场照片"
                    android:textColor="@color/gray_9"
@@ -251,7 +251,7 @@
                    android:id="@+id/rv_list"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginHorizontal="@dimen/dp_17"
                    android:layout_marginHorizontal="@dimen/dp_25"
                    android:layout_marginTop="@dimen/dp_9"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
common/src/main/java/com/xw/common/CommonDialog.kt
@@ -103,7 +103,7 @@
            singleTipsDialogMap[context] = dialog
            dialog.show()
            dialog.window?.setGravity(Gravity.CENTER)
            dialog.window?.setWindowAnimations(R.style.AnimLeft)
//            dialog.window?.setWindowAnimations(R.style.AnimLeft)
        }
    }
@@ -183,7 +183,7 @@
            }
            dialog.show()
            dialog.window?.setGravity(Gravity.CENTER)
            dialog.window?.setWindowAnimations(R.style.AnimLeft)
//            dialog.window?.setWindowAnimations(R.style.AnimLeft)
        }
    }
@@ -295,7 +295,7 @@
            }
            dialog.show()
            dialog.window?.setGravity(Gravity.CENTER)
            dialog.window?.setWindowAnimations(R.style.AnimLeft)
//            dialog.window?.setWindowAnimations(R.style.AnimLeft)
        }
    }
common/src/main/java/com/xw/common/base/ImageSelectAdapter.kt
@@ -144,6 +144,8 @@
    var url: String = "",
    var localPath: String = "",
    var type: String = "", // video  ic_notice  audio
    var placeholder: Int = R.mipmap.icon_default5,
    var error: Int = R.mipmap.icon_default5,
){
    override fun toString(): String {
        return "FileSelectBean(url='$url', localPath='$localPath', type='$type')"
common/src/main/java/com/xw/common/viewAdapter/ViewAdapter.kt
@@ -110,13 +110,13 @@
                        val url = item.localPath
                        Glide.with(imageView.context)
                            .load(if (url.startsWith("content://")) Uri.parse(url) else url)
                            .placeholder(R.mipmap.icon_default).error(R.mipmap.icon_default)
                            .placeholder(item.placeholder).error(it.error)
                            .format(DecodeFormat.PREFER_RGB_565).into(imageView)
                    }
                    item.url.isNotEmpty() -> {
                        Glide.with(imageView.context).load(item.url)
                            .placeholder(R.mipmap.icon_default).error(R.mipmap.icon_default)
                            .placeholder(item.placeholder).error(it.error)
                            .format(DecodeFormat.PREFER_RGB_565).into(imageView)
                    }
common/src/main/res/drawable/shape_black_bg_8.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="8dp" />
    <solid android:color="#000000" />
    <solid android:color="#b8000000" />
</shape>
common/src/main/res/mipmap-xhdpi/icon_default2.png
common/src/main/res/mipmap-xhdpi/icon_default3.png
common/src/main/res/mipmap-xhdpi/icon_default4.png
common/src/main/res/mipmap-xhdpi/icon_default5.png