18034727885
2026-06-09 b2978800d6c9cb1970e7183f5b24dd4a32aaf53f
任务中心UI优化
8个文件已添加
2个文件已修改
146 ■■■■■ 已修改文件
app/src/main/java/com/xw/yunwei/ui/task/TaskVM.kt 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/selector_nav_task_accident.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/selector_nav_task_all.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/selector_nav_task_normal.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_task.xml 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xhdpi/icon_note_tick_circle.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xhdpi/icon_note_tick_circle2.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xhdpi/icon_note_triangle.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xhdpi/icon_note_triangle2.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xhdpi/icon_tick_double_rect.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/task/TaskVM.kt
@@ -4,16 +4,12 @@
import android.view.View
import androidx.lifecycle.MutableLiveData
import com.amap.api.location.AMapLocation
import com.blankj.utilcode.util.TimeUtils
import com.xw.common.base.BaseViewModel
import com.xw.common.utils.ToastUtilCommon
import com.xw.yunwei.R
import com.xw.yunwei.databinding.ItemArrow2TextBinding
import com.xw.yunwei.net.TaskRepository
import com.xw.yunwei.ui.task.list.TaskListFragment
import org.koin.core.component.inject
import java.text.SimpleDateFormat
import kotlin.getValue
/**
 * 任务中心 ViewModel
@@ -25,17 +21,20 @@
 */
class TaskVM(myApplication: Application) : BaseViewModel(myApplication) {
    companion object{
    companion object {
        /** 全局标识:是否需要刷新消息红点 */
        val needRefresh = MutableLiveData(true)
    }
    /** 全部任务列表 Fragment */
    val allTaskFragment by lazy { TaskListFragment.newInstance(null) }
    /** 待到达任务列表 Fragment */
    val togoTaskFragment by lazy { TaskListFragment.newInstance(0) }
    /** 待处理任务列表 Fragment */
    val todoTaskFragment by lazy { TaskListFragment.newInstance(1) }
    /** 已处理任务列表 Fragment */
    val finishTaskFragment by lazy { TaskListFragment.newInstance(2) }
    val reassignmentTaskFragment by lazy { TaskListFragment.newInstance(4) }
@@ -43,34 +42,49 @@
    /** 任务数据仓库 */
    val taskRepository: TaskRepository by inject()
    //选中下标
    val selectIndex = MutableLiveData(0)
    /** 当前定位信息 */
    var location: AMapLocation? = null
    /** 车牌号搜索关键字 */
    // 车牌号
    val plateNumber: MutableLiveData<String> = MutableLiveData("")
    /** 筛选开始时间(yyyy-MM-dd) */
    var startTime = ""
    /** 筛选结束时间(yyyy-MM-dd) */
    var endTime = ""
    /** 派发时间筛选项 */
    val filterTaskTime = listOf("今天", "昨天", "近一周", "近一月")
    /** 优先级筛选项 */
    val filterTaskLevel = listOf("全部", "一级", "二级", "三级")
    /** 任务类型筛选项 */
    val filterTaskType = listOf("全部", "事故", "常规")
    /** 排序优先筛选项 */
    val filterTaskSort = listOf("任务优先级", "车牌号", "任务时间")
    /** 当前选中的派发时间 */
    var selectTaskTime = filterTaskTime[2]
    /** 当前选中的优先级 */
    var selectTaskLevel = filterTaskLevel[0]
    /** 当前选中的任务类型 */
    var selectTaskType = filterTaskType[0]
    /** 当前选中的排序字段 */
    var selectTaskSort = filterTaskSort[0]
    /** 排序规则:1 正序,2 倒序 */
    var taskSort = 1
    /** 排序视图绑定列表,用于动态更新 UI 状态 */
    val sortViews = mutableListOf<ItemArrow2TextBinding>()
@@ -81,7 +95,7 @@
     *
     * @return 派发类型编码,null 表示未选择
     */
     fun getDistributeType(): Int? = when {
    fun getDistributeType(): Int? = when {
        startTime.isNotEmpty() || endTime.isNotEmpty() -> 5
        selectTaskTime == "今天" -> 1
        selectTaskTime == "昨天" -> 2
@@ -95,7 +109,7 @@
     *
     * @return 紧急程度编码,null 表示全部
     */
     fun getUrgencyLevel(): Int? = when (selectTaskLevel) {
    fun getUrgencyLevel(): Int? = when (selectTaskLevel) {
        "一级" -> 0
        "二级" -> 1
        "三级" -> 2
@@ -107,7 +121,7 @@
     *
     * @return 任务类别编码,null 表示全部
     */
     fun getTaskCategory(): Int? = when(selectTaskType) {
    fun getTaskCategory(): Int? = when (selectTaskType) {
        "事故" -> 2
        "常规" -> 1
        else -> null
@@ -118,7 +132,7 @@
     *
     * @return 排序类型编码,null 表示未选择
     */
     fun getSortType(): Int? = when (selectTaskSort) {
    fun getSortType(): Int? = when (selectTaskSort) {
        "任务优先级" -> 1
        "车牌号" -> 2
        "任务时间" -> 3
@@ -137,4 +151,12 @@
            }
        }
    }
    val onClick = View.OnClickListener {
        when (it.id) {
            R.id.ll_all -> selectIndex.postValue(0)
            R.id.ll_accident -> selectIndex.postValue(1)
            R.id.ll_normal -> selectIndex.postValue(2)
        }
    }
}
app/src/main/res/drawable/selector_nav_task_accident.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@mipmap/icon_note_triangle" android:state_selected="true"/>
    <item android:drawable="@mipmap/icon_note_triangle2"/>
</selector>
app/src/main/res/drawable/selector_nav_task_all.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@mipmap/icon_tick_double_rect" android:state_selected="true"/>
    <item android:drawable="@mipmap/icon_tick_double_rect"/>
</selector>
app/src/main/res/drawable/selector_nav_task_normal.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@mipmap/icon_note_tick_circle" android:state_selected="true"/>
    <item android:drawable="@mipmap/icon_note_tick_circle2"/>
</selector>
app/src/main/res/layout/fragment_task.xml
@@ -119,6 +119,7 @@
            android:layout_marginTop="@dimen/dp_3"
            android:background="@null"
            app:layout_constraintTop_toBottomOf="@+id/llSearchAndFilter"
            app:tabBackground="@null"
            app:tabGravity="fill"
            app:tabIndicator="@drawable/layer_indicator_task"
            app:tabIndicatorColor="@color/blue_5"
@@ -126,7 +127,6 @@
            app:tabMode="fixed"
            app:tabPaddingEnd="12dp"
            app:tabPaddingStart="12dp"
            app:tabBackground="@null"
            app:tabRippleColor="@null"
            app:tabSelectedTextColor="@color/blue_5"
            app:tabTextColor="@color/gray_7" />
@@ -137,10 +137,97 @@
            android:layout_height="0dp"
            android:layout_marginTop="-8dp"
            android:paddingTop="@dimen/dp_12"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintBottom_toTopOf="@id/navView"
            app:layout_constraintTop_toBottomOf="@+id/tabLayout"
            app:layout_constraintVertical_bias="0.0"
            tools:layout_editor_absoluteX="0dp" />
        <LinearLayout
            android:id="@+id/navView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/white"
            android:gravity="center"
            android:orientation="horizontal"
            app:layout_constraintBottom_toBottomOf="parent">
            <LinearLayout
                android:id="@+id/ll_all"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:onClick="@{viewModel.onClick}"
                android:orientation="vertical"
                android:paddingVertical="@dimen/dp_8">
                <androidx.appcompat.widget.AppCompatImageView
                    selected="@{viewModel.selectIndex==0}"
                    android:layout_width="@dimen/dp_28"
                    android:layout_height="@dimen/dp_28"
                    android:src="@drawable/selector_nav_task_all" />
                <androidx.appcompat.widget.AppCompatTextView
                    selected="@{viewModel.selectIndex==0}"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:text="全部任务"
                    android:textColor="@color/selector_bottom_nav"
                    android:textSize="@dimen/sp_12" />
            </LinearLayout>
            <LinearLayout
                android:id="@+id/ll_accident"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:onClick="@{viewModel.onClick}"
                android:orientation="vertical"
                android:paddingVertical="@dimen/dp_8">
                <androidx.appcompat.widget.AppCompatImageView
                    selected="@{viewModel.selectIndex==1}"
                    android:layout_width="@dimen/dp_28"
                    android:layout_height="@dimen/dp_28"
                    android:src="@drawable/selector_nav_task_accident" />
                <androidx.appcompat.widget.AppCompatTextView
                    selected="@{viewModel.selectIndex==1}"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:text="事故任务"
                    android:textColor="@color/selector_bottom_nav"
                    android:textSize="@dimen/sp_12" />
            </LinearLayout>
            <LinearLayout
                android:id="@+id/ll_normal"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:orientation="vertical"
                android:paddingVertical="@dimen/dp_8">
                <androidx.appcompat.widget.AppCompatImageView
                    selected="@{viewModel.selectIndex==2}"
                    android:layout_width="@dimen/dp_28"
                    android:layout_height="@dimen/dp_28"
                    android:src="@drawable/selector_nav_task_normal" />
                <androidx.appcompat.widget.AppCompatTextView
                    selected="@{viewModel.selectIndex==2}"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:text="常规任务"
                    android:textColor="@color/selector_bottom_nav"
                    android:textSize="@dimen/sp_12" />
            </LinearLayout>
        </LinearLayout>
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>
app/src/main/res/mipmap-xhdpi/icon_note_tick_circle.png
app/src/main/res/mipmap-xhdpi/icon_note_tick_circle2.png
app/src/main/res/mipmap-xhdpi/icon_note_triangle.png
app/src/main/res/mipmap-xhdpi/icon_note_triangle2.png
app/src/main/res/mipmap-xhdpi/icon_tick_double_rect.png