|
|
@@ -1,5 +1,6 @@
|
|
|
package com.grkj.iscs.features.main.fragment.job_manage
|
|
|
|
|
|
+import android.widget.TextView
|
|
|
import androidx.core.view.isVisible
|
|
|
import androidx.fragment.app.viewModels
|
|
|
import androidx.lifecycle.Lifecycle
|
|
|
@@ -22,6 +23,7 @@ import com.grkj.iscs.common.DataTransferConstants
|
|
|
import com.grkj.iscs.databinding.FragmentMyTodoListBinding
|
|
|
import com.grkj.iscs.databinding.ItemMyTodoBinding
|
|
|
import com.grkj.iscs.features.main.dialog.CheckFaceDialog
|
|
|
+import com.grkj.iscs.features.main.dialog.TextDropDownDialog
|
|
|
import com.grkj.iscs.features.main.dialog.job_manage.TodoPointDetailDialog
|
|
|
import com.grkj.iscs.features.main.viewmodel.job_manage.JobExecuteViewModel
|
|
|
import com.grkj.iscs.features.main.viewmodel.job_manage.MyTodoViewModel
|
|
|
@@ -32,9 +34,12 @@ import com.grkj.ui_base.utils.CommonUtils
|
|
|
import com.grkj.ui_base.utils.event.UiEvent
|
|
|
import com.grkj.ui_base.utils.extension.tip
|
|
|
import com.kongzue.dialogx.dialogs.PopTip
|
|
|
+import com.loper7.date_time_picker.dialog.CardDatePickerDialog
|
|
|
import com.sik.sikcore.data.GlobalDataTempStore
|
|
|
+import com.sik.sikcore.date.TimeUtils
|
|
|
import com.sik.sikcore.extension.setDebouncedClickListener
|
|
|
import dagger.hilt.android.AndroidEntryPoint
|
|
|
+import java.util.Date
|
|
|
|
|
|
/**
|
|
|
* 我的待办
|
|
|
@@ -52,6 +57,15 @@ class MyTodoListFragment : BaseFragment<FragmentMyTodoListBinding>() {
|
|
|
)
|
|
|
}
|
|
|
|
|
|
+ private val handleTimeData: List<String> by lazy {
|
|
|
+ listOf(
|
|
|
+ getString(R.string.all),
|
|
|
+ getString(R.string.handle_time_last_7_days),
|
|
|
+ getString(R.string.handle_time_last_30_days),
|
|
|
+ getString(R.string.handle_time_custom_time_range)
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
override fun getLayoutId(): Int {
|
|
|
return R.layout.fragment_my_todo_list
|
|
|
}
|
|
|
@@ -73,6 +87,86 @@ class MyTodoListFragment : BaseFragment<FragmentMyTodoListBinding>() {
|
|
|
}
|
|
|
}
|
|
|
setupTabs()
|
|
|
+ setupHandleTime()
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置处理时间
|
|
|
+ */
|
|
|
+ private fun setupHandleTime() {
|
|
|
+ binding.handleTimeTv.text = getString(R.string.all)
|
|
|
+ binding.handleTimeTv.setDebouncedClickListener {
|
|
|
+ TextDropDownDialog.showSingle(
|
|
|
+ handleTimeData.map {
|
|
|
+ TextDropDownDialog.SimpleTextDropDownEntity(dataText = it)
|
|
|
+ }, binding.handleTimeTv, false
|
|
|
+ ) {
|
|
|
+ val position = handleTimeData.indexOf(it.getShowText())
|
|
|
+ when (position) {
|
|
|
+ 0 -> binding.listRv.models =
|
|
|
+ viewModel.doneData.sortedByDescending { it.stepUpdateTime }
|
|
|
+
|
|
|
+ 1 -> binding.listRv.models = viewModel.doneData.filter {
|
|
|
+ val updateTimeDate = TimeUtils.parseDate(
|
|
|
+ it.stepUpdateTime,
|
|
|
+ TimeUtils.DEFAULT_DATE_HOUR_MIN_SEC_FORMAT
|
|
|
+ )
|
|
|
+ updateTimeDate?.let {
|
|
|
+ TimeUtils.calcDayNum(it, Date()) <= 1
|
|
|
+ } ?: false
|
|
|
+ }.sortedByDescending { it.stepUpdateTime }
|
|
|
+
|
|
|
+ 2 -> binding.listRv.models = viewModel.doneData.filter {
|
|
|
+ val updateTimeDate = TimeUtils.parseDate(
|
|
|
+ it.stepUpdateTime,
|
|
|
+ TimeUtils.DEFAULT_DATE_HOUR_MIN_SEC_FORMAT
|
|
|
+ )
|
|
|
+ updateTimeDate?.let {
|
|
|
+ TimeUtils.calcDayNum(it, Date()) <= 30
|
|
|
+ } ?: false
|
|
|
+ }.sortedByDescending { it.stepUpdateTime }
|
|
|
+
|
|
|
+ 3 -> {
|
|
|
+ viewModel.startTime = ""
|
|
|
+ viewModel.endTime = ""
|
|
|
+ pickDateTime(timeView = binding.handleTimeTv)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 选择时间
|
|
|
+ */
|
|
|
+ private fun pickDateTime(startTime: Boolean = true, timeView: TextView) {
|
|
|
+ CardDatePickerDialog.builder(requireContext()).setTitle(
|
|
|
+ if (startTime) CommonUtils.getStr(com.grkj.ui_base.R.string.start_time)
|
|
|
+ .toString() else CommonUtils.getStr(com.grkj.ui_base.R.string.end_time)
|
|
|
+ .toString()
|
|
|
+ ).setOnChoose { millisecond ->
|
|
|
+ val chooseTime = TimeUtils.formatDate(
|
|
|
+ Date(millisecond), TimeUtils.DEFAULT_DATE_HOUR_MIN_FORMAT
|
|
|
+ )
|
|
|
+ if (TimeUtils.isTimeBefore(
|
|
|
+ chooseTime,
|
|
|
+ viewModel.startTime,
|
|
|
+ TimeUtils.DEFAULT_DATE_HOUR_MIN_FORMAT
|
|
|
+ )
|
|
|
+ ) {
|
|
|
+ PopTip.build().tip(R.string.start_time_must_large_then_end_time)
|
|
|
+ return@setOnChoose
|
|
|
+ }
|
|
|
+ val timeStr = TimeUtils.formatDate(
|
|
|
+ Date(millisecond), TimeUtils.DEFAULT_DATE_HOUR_MIN_FORMAT
|
|
|
+ )
|
|
|
+ timeView.text = timeStr
|
|
|
+ if (startTime) {
|
|
|
+ viewModel.startTime = timeStr
|
|
|
+ } else {
|
|
|
+ viewModel.endTime = timeStr
|
|
|
+ }
|
|
|
+ }.build().show()
|
|
|
}
|
|
|
|
|
|
private fun setupTabs() {
|
|
|
@@ -89,6 +183,7 @@ class MyTodoListFragment : BaseFragment<FragmentMyTodoListBinding>() {
|
|
|
|
|
|
binding.tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
|
|
|
override fun onTabSelected(tab: TabLayout.Tab) {
|
|
|
+ binding.handleTimeLayout.isVisible = tab.position == 2
|
|
|
filterAndUpdate(tab)
|
|
|
}
|
|
|
|
|
|
@@ -104,9 +199,9 @@ class MyTodoListFragment : BaseFragment<FragmentMyTodoListBinding>() {
|
|
|
val (data, index) = when {
|
|
|
tab != null -> {
|
|
|
val list = when (tab.position) {
|
|
|
- 0 -> viewModel.waitData
|
|
|
- 1 -> viewModel.todoData
|
|
|
- 2 -> viewModel.doneData
|
|
|
+ 0 -> viewModel.waitData.sortedBy { it.ticketId }
|
|
|
+ 1 -> viewModel.todoData.sortedBy { it.ticketId }
|
|
|
+ 2 -> viewModel.doneData.sortedByDescending { it.stepUpdateTime }
|
|
|
else -> mutableListOf()
|
|
|
}
|
|
|
list to tab.position
|