18034727885
2026-06-04 4ff7c9fc7aab9db1a6e748d5136425245d8fb4d8
修复问题
8个文件已修改
518 ■■■■■ 已修改文件
app/src/main/java/com/xw/yunwei/model/TaskModel.kt 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/MainActivity.kt 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/MainVM.kt 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/task/TaskFragment.kt 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/task/list/TaskListAdapter.kt 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/task/list/TaskListFragment.kt 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/ui/task/list/TaskListVM.kt 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_task_content.xml 413 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/xw/yunwei/model/TaskModel.kt
@@ -2,6 +2,8 @@
import com.google.gson.annotations.SerializedName
val taskPlaceHolder = TaskModel()
/**
 * 车辆任务实体类
 */
@@ -110,20 +112,28 @@
        // 常规任务类型枚举(taskCategory=1时使用)
        /** 车辆检查 */
        const val TYPE_VEHICLE_CHECK = "1"
        /** 车辆充电 */
        const val TYPE_VEHICLE_CHARGING = "2"
        /** 车辆整备 */
        const val TYPE_VEHICLE_PREPARATION = "3"
        /** 整备洗车 */
        const val TYPE_PREPARATION_WASH = "4"
        /** 车辆维修 */
        const val TYPE_VEHICLE_REPAIR = "5"
        /** 车辆保养 */
        const val TYPE_VEHICLE_MAINTENANCE = "6"
        /** 车辆保险到期 */
        const val TYPE_INSURANCE_EXPIRE = "7"
        /** 车辆年检到期 */
        const val TYPE_ANNUAL_INSPECTION_EXPIRE = "8"
        /** 车辆运营资质到期 */
        const val TYPE_OPERATING_LICENSE_EXPIRE = "9"
    }
app/src/main/java/com/xw/yunwei/ui/MainActivity.kt
@@ -79,11 +79,11 @@
            if (viewModel.selectIndex.value == null) {
                if (viewModel.workPermissions.value == true) {
                    viewModel.selectIndex.value = 0
                    viewModel.selectIndex.postValue(0)
                } else if (viewModel.taskPermissions.value == true) {
                    viewModel.selectIndex.value = 1
                    viewModel.selectIndex.postValue(1)
                } else {
                    viewModel.selectIndex.value = 2
                    viewModel.selectIndex.postValue(2)
                }
            } else {
                var currentIndex = viewModel.selectIndex.value
@@ -94,7 +94,7 @@
                    currentIndex = 2
                }
                if (viewModel.selectIndex.value != currentIndex) {
                    viewModel.selectIndex.value = currentIndex
                    viewModel.selectIndex.postValue(currentIndex)
                }
            }
        }
@@ -202,7 +202,7 @@
    @Suppress("unused")
    @Subscribe(threadMode = ThreadMode.MAIN)
    fun onMessageEvent(event: SwitchTabMain) {
        viewModel.selectIndex.value = event.index
        viewModel.selectIndex.postValue(event.index)
    }
    override fun location(pLocation: AMapLocation?) {
app/src/main/java/com/xw/yunwei/ui/MainVM.kt
@@ -9,13 +9,12 @@
import com.xw.yunwei.model.AppVersionModel
import com.xw.yunwei.net.UserRepository
import org.koin.core.component.inject
import kotlin.getValue
class MainVM(application: Application) : BaseViewModel(application) {
    val userRepository: UserRepository by inject()
    val selectIndex = MutableLiveData<Int>()
    val selectIndex = MutableLiveData<Int>(0)
    val taskPermissions = MutableLiveData(false) // 任务中心权限
    val workPermissions = MutableLiveData(false) // 工作台权限
@@ -23,9 +22,9 @@
    val onClick = View.OnClickListener {
        when (it.id) {
            R.id.navWork -> selectIndex.value = 0
            R.id.navTask -> selectIndex.value = 1
            R.id.navMine -> selectIndex.value = 2
            R.id.navWork -> selectIndex.postValue(0)
            R.id.navTask -> selectIndex.postValue(1)
            R.id.navMine -> selectIndex.postValue(2)
        }
    }
app/src/main/java/com/xw/yunwei/ui/task/TaskFragment.kt
@@ -5,6 +5,7 @@
import android.view.Gravity
import android.view.KeyEvent
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.WindowManager
import androidx.core.view.isVisible
@@ -112,12 +113,15 @@
    override fun init() {
        super.init()
        EventBus.getDefault().register(this)
    }
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        binding.viewPager.adapter = PagerAdapter(this)
        TabLayoutMediator(binding.tabLayout, binding.viewPager) { tab, position ->
            tab.text = tabTitles[position]
        }.attach()
    }
    /**
     * 设置各类点击及输入监听器
     */
@@ -166,7 +170,7 @@
     */
    override fun setObservable() {
        super.setObservable()
        TaskVM.needRefresh.observe(this) {
        TaskVM.needRefresh.observe(viewLifecycleOwner) {
            if (it) {
                TaskVM.needRefresh.value = false
                // 刷新未读消息数量并控制角标显示
app/src/main/java/com/xw/yunwei/ui/task/list/TaskListAdapter.kt
@@ -19,6 +19,7 @@
import com.xw.yunwei.R
import com.xw.yunwei.databinding.ItemTaskContentBinding
import com.xw.yunwei.model.TaskModel
import com.xw.yunwei.model.taskPlaceHolder
import java.time.Duration
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
@@ -58,7 +59,7 @@
        this.lat = lat ?: 0.0
        this.lng = lng ?: 0.0
        if (refresh) {
            recyclerView.post { notifyDataSetChanged() }
            notifyDataSetChanged()
        }
    }
@@ -87,10 +88,13 @@
     * 若倒计时结束(时分秒均为 0),则标记为"已超时"并从注册表中移除。
     */
    private fun updateAllCountdowns() {
        if (!recyclerView.isAttachedToWindow) {
            return
        }
        val timeComplete = mutableListOf<Int>()
        countdownHolders.forEach { (code, binding) ->
            if (binding.root.windowToken == null || !binding.root.isAttachedToWindow) {
            if (!binding.root.isAttachedToWindow) {
                return@forEach
            }
            // 获取当前绑定的数据
@@ -135,10 +139,20 @@
    @SuppressLint("SetTextI18n")
    override fun convert(holder: BaseViewHolder, item: TaskModel) {
        if (!recyclerView.isAttachedToWindow) {
            return
        }
        if (holder.bindingAdapterPosition == RecyclerView.NO_POSITION) {
            return
        }
        DataBindingUtil.bind<ItemTaskContentBinding>(holder.itemView)?.let { bind ->
            // 保存 position 到 tag,用于后续更新时获取数据
            bind.root.tag = holder.bindingAdapterPosition
            bind.clContent.visibility = if (item == taskPlaceHolder) View.GONE else View.VISIBLE
            bind.tips.visibility = if (item == taskPlaceHolder) View.VISIBLE else View.GONE
            if (item == taskPlaceHolder) {
                return
            }
            // 根据任务紧急程度设置左侧等级图标
            val levelId = when (item.taskUrgencyLevel) {
                0 -> R.mipmap.ic_task_item_left_one
@@ -232,7 +246,7 @@
            }
            // 设置点击事件:整项点击、操作按钮点击、导航点击
            bind.root.setOnClickListener {
            bind.clContent.setOnClickListener {
                if (item.status == 4) {
                    return@setOnClickListener
                }
@@ -327,8 +341,8 @@
     * 移除该 holder 在倒计时注册表中的记录,防止对已回收视图进行刷新。
     */
    override fun onViewRecycled(holder: BaseViewHolder) {
        super.onViewRecycled(holder)
        countdownHolders.remove(holder.hashCode())
        super.onViewRecycled(holder)
    }
    /**
app/src/main/java/com/xw/yunwei/ui/task/list/TaskListFragment.kt
@@ -4,7 +4,6 @@
import android.os.Bundle
import android.view.View
import androidx.core.os.bundleOf
import androidx.core.view.isVisible
import androidx.recyclerview.widget.LinearLayoutManager
import com.amap.api.maps.model.LatLng
import com.blankj.utilcode.util.GsonUtils
@@ -69,18 +68,14 @@
    /** 空数据提示视图,懒加载创建 */
    val emptyView by lazy {
        BindUtils.getEmptyView(requireActivity(), "暂无数据").apply { visibility = View.GONE }
        BindUtils.getEmptyView(requireActivity(), "暂无数据")
    }
    /** 底部"已加载全部"提示视图,懒加载创建 */
    val footView by lazy {
        BindUtils.getFootView(requireActivity(), "已加载全部任务").apply { visibility = View.GONE }
    }
    /** 任务列表适配器,配置空视图与底部视图 */
    val adapter by lazy {
        TaskListAdapter(this).apply {
            setHasStableIds(true)
            setEmptyView(emptyView)
            setFooterView(footView)
        }
    }
@@ -96,31 +91,14 @@
    override fun setObservable() {
        super.setObservable()
        // 监听刷新状态,控制空视图与底部视图的显示
        viewModel.refreshLiveData.fastObserve(this, binding.refreshLayout) { state ->
            binding.refreshLayout.post {
                when (state) {
                    ListState.DONE -> {
                        if (viewModel.dataList.value.isNullOrEmpty()) {
                            emptyView.isVisible = true
                        } else {
                            footView.isVisible = true
                        }
                    }
                    else -> {
                        emptyView.isVisible = false
                        footView.isVisible = false
                    }
                }
            }
        }
        viewModel.refreshLiveData.fastObserve(this, binding.refreshLayout)
        // 监听数据变化,更新适配器列表
        viewModel.dataList.observe(this) {
            binding.rv.post { adapter.setList(it) }
        viewModel.dataList.observe(viewLifecycleOwner) {
            adapter.setList(it)
        }
        // 权限变化时刷新列表,控制按钮显示状态
        MyApp.permissions.observe(this) {
            binding.rv.post { adapter.notifyDataSetChanged() }
        MyApp.permissions.observe(viewLifecycleOwner) {
            adapter.notifyDataSetChanged()
        }
    }
@@ -139,7 +117,6 @@
    /** 初始化 RecyclerView 适配器与布局管理器 */
    private fun initAdapter() {
        adapter.setList(viewModel.dataList.value ?: ArrayList())
        binding.rv.adapter = adapter
        binding.rv.layoutManager = LinearLayoutManager(requireActivity())
    }
app/src/main/java/com/xw/yunwei/ui/task/list/TaskListVM.kt
@@ -6,9 +6,9 @@
import com.xw.common.utils.LogUtils
import com.xw.common.utils.ToastUtilCommon
import com.xw.yunwei.model.TaskModel
import com.xw.yunwei.model.taskPlaceHolder
import com.xw.yunwei.net.TaskRepository
import org.koin.core.component.inject
import kotlin.getValue
/**
 * 任务列表视图模型
@@ -94,9 +94,12 @@
                list.add(item)
            }
            if ((data?.total ?: 0) <= list.size) {
                if (list.isNotEmpty()) {
                    list.add(taskPlaceHolder)
                }
                refreshLiveData.done()
            }
            LogUtils.d("zmc-test","initFilterListener received location data")
            LogUtils.d("zmc-test", "initFilterListener received location data")
            dataList.postValue(list)
            pageNo = index
app/src/main/res/layout/item_task_content.xml
@@ -7,226 +7,243 @@
    </data>
    <androidx.constraintlayout.widget.ConstraintLayout
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginHorizontal="@dimen/dp_10"
        android:layout_marginBottom="@dimen/dp_12">
        <LinearLayout
        <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/cl_content"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="@dimen/dp_4"
            android:layout_marginTop="@dimen/dp_4"
            android:background="@drawable/shape_white_bg_4"
            android:orientation="vertical"
            android:paddingBottom="@dimen/dp_16"
            app:layout_constraintTop_toTopOf="parent">
            <LinearLayout
                android:id="@+id/countdownLayout"
                android:layout_width="match_parent"
                android:layout_height="@dimen/dp_36"
                android:background="@mipmap/img_task_item_top_bg_blue"
                android:gravity="center_vertical"
                android:orientation="horizontal"
                android:paddingHorizontal="@dimen/dp_12">
                <androidx.appcompat.widget.AppCompatTextView
                    android:id="@+id/countdownTips"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:ellipsize="end"
                    android:gravity="end"
                    android:maxLines="1"
                    android:paddingEnd="@dimen/dp_8"
                    android:singleLine="true"
                    android:text="倒计时结束前,务必到达现场"
                    android:textColor="@color/blue_5"
                    android:textSize="@dimen/sp_12" />
                <androidx.appcompat.widget.AppCompatTextView
                    android:id="@+id/hour"
                    android:layout_width="@dimen/dp_30"
                    android:layout_height="@dimen/dp_23"
                    android:layout_marginStart="@dimen/dp_8"
                    android:background="@drawable/shape_blue_5_bg_4"
                    android:gravity="center"
                    android:text="11"
                    android:textColor="@color/white"
                    android:textSize="@dimen/sp_16"
                    android:textStyle="bold" />
                <androidx.appcompat.widget.AppCompatImageView
                    android:id="@+id/colon1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginHorizontal="@dimen/dp_3"
                    android:layout_marginTop="@dimen/dp_3"
                    android:src="@mipmap/ic_task_item_colon_b" />
                <androidx.appcompat.widget.AppCompatTextView
                    android:id="@+id/minutes"
                    android:layout_width="@dimen/dp_30"
                    android:layout_height="@dimen/dp_23"
                    android:background="@drawable/shape_blue_5_bg_4"
                    android:gravity="center"
                    android:text="33"
                    android:textColor="@color/white"
                    android:textSize="@dimen/sp_16"
                    android:textStyle="bold" />
                <androidx.appcompat.widget.AppCompatImageView
                    android:id="@+id/colon2"
                    android:layout_width="@dimen/dp_3"
                    android:layout_height="@dimen/dp_10"
                    android:layout_marginHorizontal="@dimen/dp_3"
                    android:layout_marginTop="@dimen/dp_3"
                    android:src="@mipmap/ic_task_item_colon_b" />
                <androidx.appcompat.widget.AppCompatTextView
                    android:id="@+id/second"
                    android:layout_width="@dimen/dp_30"
                    android:layout_height="@dimen/dp_23"
                    android:background="@drawable/shape_blue_5_bg_4"
                    android:gravity="center"
                    android:text="09"
                    android:textColor="@color/white"
                    android:textSize="@dimen/sp_16"
                    android:textStyle="bold" />
            </LinearLayout>
            android:layout_height="wrap_content">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginHorizontal="@dimen/dp_16"
                android:layout_marginTop="@dimen/dp_20"
                android:gravity="center_vertical"
                android:orientation="horizontal">
                android:layout_marginStart="@dimen/dp_4"
                android:layout_marginTop="@dimen/dp_4"
                android:background="@drawable/shape_white_bg_4"
                android:orientation="vertical"
                android:paddingBottom="@dimen/dp_16"
                app:layout_constraintTop_toTopOf="parent">
                <androidx.appcompat.widget.AppCompatTextView
                    android:id="@+id/type"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@drawable/shape_gray_7_r_4"
                    android:paddingHorizontal="@dimen/dp_8"
                    android:paddingVertical="@dimen/dp_3"
                    android:text="事故"
                    android:textColor="@color/gray_7"
                    android:textSize="@dimen/sp_14" />
                <LinearLayout
                    android:id="@+id/countdownLayout"
                    android:layout_width="match_parent"
                    android:layout_height="@dimen/dp_36"
                    android:background="@mipmap/img_task_item_top_bg_blue"
                    android:gravity="center_vertical"
                    android:orientation="horizontal"
                    android:paddingHorizontal="@dimen/dp_12">
                <androidx.appcompat.widget.AppCompatTextView
                    android:id="@+id/plateNumber"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_marginHorizontal="@dimen/dp_8"
                    android:layout_weight="1"
                    android:text="粤A 888WM试"
                    android:textColor="@color/gray_9"
                    android:textSize="@dimen/sp_18"
                    android:textStyle="bold" />
                    <androidx.appcompat.widget.AppCompatTextView
                        android:id="@+id/countdownTips"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:ellipsize="end"
                        android:gravity="end"
                        android:maxLines="1"
                        android:paddingEnd="@dimen/dp_8"
                        android:singleLine="true"
                        android:text="倒计时结束前,务必到达现场"
                        android:textColor="@color/blue_5"
                        android:textSize="@dimen/sp_12" />
                <androidx.appcompat.widget.AppCompatTextView
                    android:id="@+id/status"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@drawable/shape_gray_3_bg_2"
                    android:paddingHorizontal="@dimen/dp_8"
                    android:paddingVertical="@dimen/dp_3"
                    android:text="待到达"
                    android:textColor="@color/gray_8"
                    android:textSize="@dimen/sp_12" />
                    <androidx.appcompat.widget.AppCompatTextView
                        android:id="@+id/hour"
                        android:layout_width="@dimen/dp_30"
                        android:layout_height="@dimen/dp_23"
                        android:layout_marginStart="@dimen/dp_8"
                        android:background="@drawable/shape_blue_5_bg_4"
                        android:gravity="center"
                        android:text="11"
                        android:textColor="@color/white"
                        android:textSize="@dimen/sp_16"
                        android:textStyle="bold" />
                <androidx.appcompat.widget.AppCompatImageView
                    android:id="@+id/iv_arrow"
                    android:layout_width="@dimen/dp_16"
                    android:layout_height="@dimen/dp_16"
                    android:layout_marginStart="@dimen/dp_4"
                    android:src="@mipmap/ic_task_item_arrow_right" />
                    <androidx.appcompat.widget.AppCompatImageView
                        android:id="@+id/colon1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginHorizontal="@dimen/dp_3"
                        android:layout_marginTop="@dimen/dp_3"
                        android:src="@mipmap/ic_task_item_colon_b" />
                    <androidx.appcompat.widget.AppCompatTextView
                        android:id="@+id/minutes"
                        android:layout_width="@dimen/dp_30"
                        android:layout_height="@dimen/dp_23"
                        android:background="@drawable/shape_blue_5_bg_4"
                        android:gravity="center"
                        android:text="33"
                        android:textColor="@color/white"
                        android:textSize="@dimen/sp_16"
                        android:textStyle="bold" />
            </LinearLayout>
                    <androidx.appcompat.widget.AppCompatImageView
                        android:id="@+id/colon2"
                        android:layout_width="@dimen/dp_3"
                        android:layout_height="@dimen/dp_10"
                        android:layout_marginHorizontal="@dimen/dp_3"
                        android:layout_marginTop="@dimen/dp_3"
                        android:src="@mipmap/ic_task_item_colon_b" />
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginHorizontal="@dimen/dp_16"
                android:layout_marginTop="@dimen/dp_16"
                android:background="@mipmap/img_map"
                android:minHeight="@dimen/dp_58"
                android:orientation="horizontal">
                    <androidx.appcompat.widget.AppCompatTextView
                        android:id="@+id/second"
                        android:layout_width="@dimen/dp_30"
                        android:layout_height="@dimen/dp_23"
                        android:background="@drawable/shape_blue_5_bg_4"
                        android:gravity="center"
                        android:text="09"
                        android:textColor="@color/white"
                        android:textSize="@dimen/sp_16"
                        android:textStyle="bold" />
                <androidx.appcompat.widget.AppCompatTextView
                    android:id="@+id/address"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:layout_marginStart="@dimen/dp_12"
                    android:layout_weight="1"
                    android:textColor="@color/gray_9"
                    android:textSize="@dimen/sp_14"
                    android:textStyle="bold"
                    tools:text="蜀山区华侨中心A座2301" />
                </LinearLayout>
                <androidx.appcompat.widget.AppCompatImageView
                    android:id="@+id/nav"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="end|center_vertical"
                    android:layout_margin="@dimen/dp_12"
                    android:src="@drawable/svg_map_nav" />
            </LinearLayout>
            <LinearLayout
                android:id="@+id/ll_notice"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginHorizontal="@dimen/dp_16"
                android:layout_marginTop="@dimen/dp_12"
                android:gravity="center"
                android:orientation="horizontal"
                android:visibility="gone"
                tools:visibility="visible">
                <ImageView
                    android:layout_width="@dimen/dp_12"
                    android:layout_height="@dimen/dp_12"
                    android:src="@mipmap/ic_notice_blue" />
                <TextView
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="@dimen/dp_4"
                    android:text="系统暂未找到运营维护人员,请等待管理员处理"
                    android:textColor="@color/blue_5"
                    android:textSize="@dimen/sp_12" />
                    android:layout_marginHorizontal="@dimen/dp_16"
                    android:layout_marginTop="@dimen/dp_20"
                    android:gravity="center_vertical"
                    android:orientation="horizontal">
                    <androidx.appcompat.widget.AppCompatTextView
                        android:id="@+id/type"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:background="@drawable/shape_gray_7_r_4"
                        android:paddingHorizontal="@dimen/dp_8"
                        android:paddingVertical="@dimen/dp_3"
                        android:text="事故"
                        android:textColor="@color/gray_7"
                        android:textSize="@dimen/sp_14" />
                    <androidx.appcompat.widget.AppCompatTextView
                        android:id="@+id/plateNumber"
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_marginHorizontal="@dimen/dp_8"
                        android:layout_weight="1"
                        android:text="粤A 888WM试"
                        android:textColor="@color/gray_9"
                        android:textSize="@dimen/sp_18"
                        android:textStyle="bold" />
                    <androidx.appcompat.widget.AppCompatTextView
                        android:id="@+id/status"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:background="@drawable/shape_gray_3_bg_2"
                        android:paddingHorizontal="@dimen/dp_8"
                        android:paddingVertical="@dimen/dp_3"
                        android:text="待到达"
                        android:textColor="@color/gray_8"
                        android:textSize="@dimen/sp_12" />
                    <androidx.appcompat.widget.AppCompatImageView
                        android:id="@+id/iv_arrow"
                        android:layout_width="@dimen/dp_16"
                        android:layout_height="@dimen/dp_16"
                        android:layout_marginStart="@dimen/dp_4"
                        android:src="@mipmap/ic_task_item_arrow_right" />
                </LinearLayout>
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginHorizontal="@dimen/dp_16"
                    android:layout_marginTop="@dimen/dp_16"
                    android:background="@mipmap/img_map"
                    android:minHeight="@dimen/dp_58"
                    android:orientation="horizontal">
                    <androidx.appcompat.widget.AppCompatTextView
                        android:id="@+id/address"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:layout_marginStart="@dimen/dp_12"
                        android:layout_weight="1"
                        android:textColor="@color/gray_9"
                        android:textSize="@dimen/sp_14"
                        android:textStyle="bold"
                        tools:text="蜀山区华侨中心A座2301" />
                    <androidx.appcompat.widget.AppCompatImageView
                        android:id="@+id/nav"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="end|center_vertical"
                        android:layout_margin="@dimen/dp_12"
                        android:src="@drawable/svg_map_nav" />
                </LinearLayout>
                <LinearLayout
                    android:id="@+id/ll_notice"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginHorizontal="@dimen/dp_16"
                    android:layout_marginTop="@dimen/dp_12"
                    android:gravity="center"
                    android:orientation="horizontal"
                    android:visibility="gone"
                    tools:visibility="visible">
                    <ImageView
                        android:layout_width="@dimen/dp_12"
                        android:layout_height="@dimen/dp_12"
                        android:src="@mipmap/ic_notice_blue" />
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="@dimen/dp_4"
                        android:text="系统暂未找到运营维护人员,请等待管理员处理"
                        android:textColor="@color/blue_5"
                        android:textSize="@dimen/sp_12" />
                </LinearLayout>
                <androidx.appcompat.widget.AppCompatTextView
                    android:id="@+id/tvControl"
                    android:layout_width="match_parent"
                    android:layout_height="@dimen/dp_40"
                    android:layout_marginHorizontal="@dimen/dp_16"
                    android:layout_marginTop="@dimen/dp_16"
                    android:background="@drawable/shape_blue_5_bg_4"
                    android:gravity="center"
                    android:text="我已到达现场"
                    android:textColor="@color/white"
                    android:textSize="@dimen/sp_14" />
            </LinearLayout>
            <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/tvControl"
                android:layout_width="match_parent"
                android:layout_height="@dimen/dp_40"
                android:layout_marginHorizontal="@dimen/dp_16"
                android:layout_marginTop="@dimen/dp_16"
                android:background="@drawable/shape_blue_5_bg_4"
                android:gravity="center"
                android:text="我已到达现场"
                android:textColor="@color/white"
                android:textSize="@dimen/sp_14" />
            <androidx.appcompat.widget.AppCompatImageView
                android:id="@+id/level"
                android:layout_width="@dimen/dp_33"
                android:layout_height="@dimen/dp_24"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                tools:src="@mipmap/ic_task_item_left_one" />
        </androidx.constraintlayout.widget.ConstraintLayout>
        </LinearLayout>
        <androidx.appcompat.widget.AppCompatImageView
            android:id="@+id/level"
            android:layout_width="@dimen/dp_33"
            android:layout_height="@dimen/dp_24"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            tools:src="@mipmap/ic_task_item_left_one" />
    </androidx.constraintlayout.widget.ConstraintLayout>
        <androidx.appcompat.widget.AppCompatTextView
            android:id="@+id/tips"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/white"
            android:gravity="center"
            android:paddingVertical="@dimen/dp_10"
            android:text="已加载全部任务"
            android:textColor="@color/gray_9"
            android:textSize="@dimen/sp_14"
            android:visibility="gone"
            tools:visibility="visible" />
    </FrameLayout>
</layout>