app/src/main/java/com/xw/yunwei/extension/ActivityExtension.kt
New file @@ -0,0 +1,15 @@ package com.xw.yunwei.extension import android.app.Activity import android.content.Context import android.view.inputmethod.InputMethodManager //扩展函数 清掉当前焦点 收起输入法 fun Activity.hideKeyboardAndClearFocus() { // 1. 清掉当前 focued 的输入框 currentFocus?.clearFocus() // 2. 收起输入法 val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager imm.hideSoftInputFromWindow(window.decorView.windowToken, 0) } app/src/main/java/com/xw/yunwei/model/TaskAccidentModel.kt
@@ -1,6 +1,7 @@ package com.xw.yunwei.model import com.google.gson.annotations.SerializedName import com.xw.yunwei.extension.dateChangePattern /** * 任务事故详情 @@ -174,6 +175,11 @@ fun hadOpenedTrunk(): Boolean { return hadTrunkOpened == "1" } //获取显示创建事件 fun getShowCreateTime(): String?{ return createTime?.dateChangePattern("yyyy-MM-dd HH:mm:ss","yyyy/MM/dd HH:mm:ss") } } /** app/src/main/java/com/xw/yunwei/model/TaskNormalModel.kt
@@ -1,6 +1,7 @@ package com.xw.yunwei.model import com.google.gson.annotations.SerializedName import com.xw.yunwei.extension.dateChangePattern /** * 常规任务详情 @@ -150,4 +151,9 @@ fun couldReassignment(): Boolean { return status != 2 && taskCategory != 1 } //获取显示创建事件 fun getShowCreateTime(): String?{ return createTime?.dateChangePattern("yyyy-MM-dd HH:mm:ss","yyyy/MM/dd HH:mm:ss") } } app/src/main/java/com/xw/yunwei/ui/task/list/TaskListFragment.kt
@@ -5,6 +5,7 @@ import android.view.View import androidx.core.os.bundleOf import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.amap.api.maps.model.LatLng import com.blankj.utilcode.util.GsonUtils import com.xw.common.base.BaseFragment @@ -17,6 +18,7 @@ import com.xw.yunwei.BR import com.xw.yunwei.MyApp import com.xw.yunwei.databinding.FragmentTaskListBinding import com.xw.yunwei.extension.hideKeyboardAndClearFocus import com.xw.yunwei.model.FilterData import com.xw.yunwei.model.LocationData import com.xw.yunwei.model.TaskModel @@ -78,6 +80,29 @@ } } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) binding.rv.addOnScrollListener(object : RecyclerView.OnScrollListener() { override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) { super.onScrollStateChanged(recyclerView, newState) when (newState) { RecyclerView.SCROLL_STATE_IDLE -> { // 滚动停止 } RecyclerView.SCROLL_STATE_DRAGGING -> { // 手指正在拖动 requireActivity().hideKeyboardAndClearFocus() } RecyclerView.SCROLL_STATE_SETTLING -> { // 惯性滑动中 } } } }) } override fun init() { super.init() viewModel.status.value = status app/src/main/java/com/xw/yunwei/ui/user/mine/MineVM.kt
@@ -52,7 +52,7 @@ //巡游打卡任务 val cruiseCheckInMissionInfo = MutableLiveData<CruiseCheckInMissionInfo>() var phone = "" // 客服电话 var phone = MutableLiveData("") // 客服电话 val onClick = View.OnClickListener { @@ -76,6 +76,10 @@ } } override fun onCreate() { super.onCreate() getPhone() } fun getInfo() { launchRequestFlow( @@ -105,16 +109,19 @@ } } fun getPhone(block: (String) -> Unit) { if (phone.isEmpty()) { fun getPhone(block: ((String) -> Unit)? = null) { if (phone.value.isNullOrEmpty()) { launchRequest { userRepository.getPhone()?.let { phone = JSONObject(gson.toJson(it)).optString("customerServicePhone") runOnMainThread { block(phone) } val phone = JSONObject(gson.toJson(it)).optString("customerServicePhone") this.phone.postValue(phone) runOnMainThread { block?.invoke(phone) } } } } else { block(phone) block?.invoke(phone.value!!) } } app/src/main/java/com/xw/yunwei/ui/work/AMapFragment.kt
@@ -351,7 +351,8 @@ point: LatLng, resId: Int, id: String, description: String? = null description: String? = null, anchorHeightRatio: Float=0.5f, ) { lifecycleScope.launchWhenResumed { aMap?.let { aMap -> @@ -361,7 +362,7 @@ val markerOptions = MarkerOptions() .position(point) .icon(centerIcon) .anchor(0.5f, 0.5f) // 将图标的中心点(而非左下角)设置为锚点,这样旋转更自然 .anchor(0.5f, anchorHeightRatio) // 将图标的中心点(而非左下角)设置为锚点,这样旋转更自然 .setFlat(true) // 重要:设置为平面模式,Marker可围绕锚点旋转 .title(description?:"") .snippet(description?:"") @@ -454,8 +455,8 @@ } else { marker.showInfoWindow() } currentBigMarker?.let { setMarkerScaleAnimation(it, 2.0f, 1.0f) } setMarkerScaleAnimation(marker, 1.0f, 2.0f) currentBigMarker?.let { setMarkerScaleAnimation(it, 1.5f, 1.0f) } setMarkerScaleAnimation(marker, 1.0f, 1.5f) currentBigMarker = marker } app/src/main/java/com/xw/yunwei/ui/work/car/manage/CarManageActivity.kt
@@ -151,7 +151,8 @@ LatLng(it.latitude ?: 0.0, it.longitude ?: 0.0), resId, "${it.id}", it.plateNumber it.plateNumber, 0.75f ) } } app/src/main/java/com/xw/yunwei/ui/work/site/SiteNavActivity.kt
@@ -108,7 +108,8 @@ LatLng(it.pointLat ?: 0.0, it.pointLon ?: 0.0), resId, "${it.id}", it.pointName it.pointName, 0.65f ) } } app/src/main/res/layout/activity_accident_detail.xml
@@ -398,7 +398,7 @@ android:gravity="end" android:maxLines="1" android:singleLine="true" android:text="@{viewModel.taskDetail.createTime}" android:text="@{viewModel.taskDetail.getShowCreateTime()}" android:textColor="@color/gray_7" android:textSize="@dimen/sp_14" tools:text="2026-1-25 17:43:02" /> app/src/main/res/layout/activity_scheduling.xml
@@ -218,7 +218,7 @@ android:layout_height="wrap_content" android:layout_gravity="end|center_vertical" android:layout_margin="@dimen/dp_12" android:src="@drawable/svg_map_location" /> android:src="@drawable/svg_map_nav" /> </FrameLayout> app/src/main/res/layout/dialog_accident_filter.xml
@@ -74,14 +74,14 @@ android:layout_width="0dp" android:layout_height="0dp" android:layout_marginHorizontal="@dimen/dp_20" android:layout_marginTop="@dimen/dp_40" android:layout_marginTop="@dimen/dp_20" android:layout_weight="1" android:background="@android:color/white" android:scrollbars="vertical" app:layout_constraintBottom_toTopOf="@+id/view" app:layout_constraintLeft_toRightOf="@+id/leftRecyclerView" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/title" /> app:layout_constraintTop_toTopOf="@id/leftRecyclerView" /> <View app/src/main/res/layout/dialog_site_filter.xml
@@ -60,7 +60,7 @@ android:id="@+id/stllStatus" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="10dp" android:layout_marginHorizontal="20dp" android:layout_marginTop="@dimen/dp_12" android:orientation="vertical" app:layout_constraintTop_toBottomOf="@+id/tv" app/src/main/res/layout/fragment_car_operations.xml
@@ -138,8 +138,7 @@ android:layout_weight="1" android:text="车辆整备" android:textColor="@color/gray_9" android:textSize="@dimen/sp_16" android:textStyle="bold" /> android:textSize="@dimen/sp_16" /> <androidx.appcompat.widget.AppCompatImageView android:layout_width="wrap_content" @@ -167,8 +166,7 @@ android:layout_weight="1" android:text="车辆充电" android:textColor="@color/gray_9" android:textSize="@dimen/sp_16" android:textStyle="bold" /> android:textSize="@dimen/sp_16" /> <androidx.appcompat.widget.AppCompatImageView android:layout_width="wrap_content" @@ -196,8 +194,7 @@ android:layout_weight="1" android:text="车辆检测" android:textColor="@color/gray_9" android:textSize="@dimen/sp_16" android:textStyle="bold" /> android:textSize="@dimen/sp_16" /> <androidx.appcompat.widget.AppCompatImageView android:layout_width="wrap_content" @@ -225,8 +222,7 @@ android:layout_weight="1" android:text="车辆维修" android:textColor="@color/gray_9" android:textSize="@dimen/sp_16" android:textStyle="bold" /> android:textSize="@dimen/sp_16" /> <androidx.appcompat.widget.AppCompatImageView android:layout_width="wrap_content" @@ -254,8 +250,7 @@ android:layout_weight="1" android:text="车身清洁" android:textColor="@color/gray_9" android:textSize="@dimen/sp_16" android:textStyle="bold" /> android:textSize="@dimen/sp_16" /> <androidx.appcompat.widget.AppCompatImageView android:layout_width="wrap_content" app/src/main/res/layout/fragment_mine.xml
@@ -93,6 +93,7 @@ android:id="@+id/roleValue" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="@dimen/dp_28" android:ellipsize="end" android:maxLines="2" android:text="@{viewModel.roleName}" @@ -100,10 +101,9 @@ android:textSize="@dimen/sp_12" app:layout_constraintBaseline_toBaselineOf="@+id/role" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/role" app:layout_constraintHorizontal_bias="0" app:layout_constraintStart_toEndOf="@+id/role" app:layout_constraintWidth_default="wrap" android:layout_marginEnd="@dimen/dp_28" tools:text="未分配" /> <androidx.appcompat.widget.AppCompatTextView @@ -169,7 +169,7 @@ <androidx.core.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="0dp" android:layout_marginTop="@dimen/dp_25" android:layout_marginTop="@dimen/dp_16" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@+id/infoLayout"> @@ -346,9 +346,9 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/dp_12" android:layout_marginTop="@dimen/dp_16" android:onClick="@{viewModel.onClick}" android:visibility="gone" app:cardCornerRadius="@dimen/dp_8" android:onClick="@{viewModel.onClick}" app:cardElevation="@dimen/dp_2" app:layout_constraintTop_toBottomOf="@+id/layout" tools:visibility="visible"> @@ -664,6 +664,16 @@ android:textSize="@dimen/sp_14" android:textStyle="bold" /> <androidx.appcompat.widget.AppCompatTextView android:id="@+id/tv_phone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="@dimen/dp_6" android:text="@{viewModel.phone}" android:textColor="@color/gray_9" android:textSize="@dimen/sp_12" tools:text="12345678901" /> <androidx.appcompat.widget.AppCompatImageView android:layout_width="wrap_content" android:layout_height="wrap_content" app/src/main/res/layout/layout_normal_task_status1.xml
@@ -238,7 +238,7 @@ android:gravity="end" android:maxLines="1" android:singleLine="true" android:text="@{viewModel.taskDetail.createTime}" android:text="@{viewModel.taskDetail.getShowCreateTime()}" android:textColor="@color/gray_7" android:textSize="@dimen/sp_14" tools:text="2026-1-25 17:43:02" /> @@ -370,7 +370,7 @@ tools:visibility="gone" android:layout_marginTop="@dimen/dp_12" show='@{viewModel.taskDetail.taskTypeId.equals("4")}' android:background="@drawable/shape_0f06b752_bg_4" android:background="@drawable/shape_0f006be1_bg_4" android:gravity="center_vertical" android:orientation="horizontal" android:paddingHorizontal="@dimen/dp_12" @@ -379,14 +379,14 @@ <androidx.appcompat.widget.AppCompatImageView android:layout_width="@dimen/dp_16" android:layout_height="@dimen/dp_16" android:src="@mipmap/ic_task_xc" /> android:src="@mipmap/ic_task_xc1" /> <androidx.appcompat.widget.AppCompatTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_10" android:text="洗车" android:textColor="#ff06B752" android:textColor="@color/blue_5" android:textSize="@dimen/sp_14" /> </LinearLayout> app/src/main/res/layout/layout_normal_task_status2.xml
@@ -162,7 +162,7 @@ android:gravity="end" android:maxLines="1" android:singleLine="true" android:text="@{viewModel.taskDetail.createTime}" android:text="@{viewModel.taskDetail.getShowCreateTime()}" android:textColor="@color/gray_7" android:textSize="@dimen/sp_14" tools:text="2026-1-25 17:43:02" /> app/src/main/res/mipmap-xhdpi/ic_map_car_g.pngapp/src/main/res/mipmap-xhdpi/ic_map_car_r.pngapp/src/main/res/mipmap-xhdpi/ic_map_site_g.pngapp/src/main/res/mipmap-xhdpi/ic_map_site_r.pngcommon/src/main/res/layout/dialog_loading.xml
@@ -32,12 +32,11 @@ <ProgressBar android:id="@+id/indicatorView" android:layout_width="@dimen/dp_45" android:layout_height="@dimen/dp_45" android:layout_marginTop="@dimen/dp_10" android:layout_width="@dimen/dp_30" android:layout_height="@dimen/dp_30" android:layout_marginTop="@dimen/dp_24" android:indeterminateDrawable="@drawable/circular_progress" android:indeterminate="true" app:layout_constraintBottom_toTopOf="@+id/tv_tips" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -50,11 +49,11 @@ android:layout_marginHorizontal="@dimen/dp_5" android:layout_marginLeft="@dimen/dp_20" android:maxLines="1" android:layout_marginTop="@dimen/dp_10" android:text="加载中..." android:textColor="@color/white" android:textSize="@dimen/sp_14" android:visibility="visible" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/indicatorView"