|
@@ -7,12 +7,17 @@ import com.drake.brv.BindingAdapter
|
|
|
import com.drake.brv.utils.linear
|
|
import com.drake.brv.utils.linear
|
|
|
import com.drake.brv.utils.models
|
|
import com.drake.brv.utils.models
|
|
|
import com.drake.brv.utils.setup
|
|
import com.drake.brv.utils.setup
|
|
|
|
|
+import com.google.gson.Gson
|
|
|
|
|
+import com.google.gson.reflect.TypeToken
|
|
|
|
|
+import com.grkj.data.data.MMKVConstants
|
|
|
import com.grkj.data.enums.RoleFunctionalPermissionsEnum
|
|
import com.grkj.data.enums.RoleFunctionalPermissionsEnum
|
|
|
import com.grkj.iscs.R
|
|
import com.grkj.iscs.R
|
|
|
import com.grkj.iscs.databinding.FragmentHomeBinding
|
|
import com.grkj.iscs.databinding.FragmentHomeBinding
|
|
|
import com.grkj.iscs.databinding.ItemHomeQuickEntranceBinding
|
|
import com.grkj.iscs.databinding.ItemHomeQuickEntranceBinding
|
|
|
|
|
+import com.grkj.iscs.features.main.dialog.QuickEntranceConfigDialog
|
|
|
import com.grkj.iscs.features.main.dialog.TextDropDownDialog
|
|
import com.grkj.iscs.features.main.dialog.TextDropDownDialog
|
|
|
import com.grkj.iscs.features.main.entity.MenuItemEntity
|
|
import com.grkj.iscs.features.main.entity.MenuItemEntity
|
|
|
|
|
+import com.grkj.iscs.features.main.entity.QuickEntranceMenuItemEntity
|
|
|
import com.grkj.iscs.features.main.viewmodel.home.HomeViewModel
|
|
import com.grkj.iscs.features.main.viewmodel.home.HomeViewModel
|
|
|
import com.grkj.ui_base.base.BaseFragment
|
|
import com.grkj.ui_base.base.BaseFragment
|
|
|
import com.grkj.ui_base.utils.CommonUtils
|
|
import com.grkj.ui_base.utils.CommonUtils
|
|
@@ -22,6 +27,7 @@ import com.grkj.ui_base.utils.extension.tip
|
|
|
import com.kongzue.dialogx.dialogs.PopTip
|
|
import com.kongzue.dialogx.dialogs.PopTip
|
|
|
import com.loper7.date_time_picker.dialog.CardDatePickerDialog
|
|
import com.loper7.date_time_picker.dialog.CardDatePickerDialog
|
|
|
import com.sik.sikcore.date.TimeUtils
|
|
import com.sik.sikcore.date.TimeUtils
|
|
|
|
|
+import com.sik.sikcore.extension.getMMKVData
|
|
|
import com.sik.sikcore.extension.setDebouncedClickListener
|
|
import com.sik.sikcore.extension.setDebouncedClickListener
|
|
|
import dagger.hilt.android.AndroidEntryPoint
|
|
import dagger.hilt.android.AndroidEntryPoint
|
|
|
import java.util.Date
|
|
import java.util.Date
|
|
@@ -33,14 +39,25 @@ import kotlin.getValue
|
|
|
@AndroidEntryPoint
|
|
@AndroidEntryPoint
|
|
|
class HomeFragment : BaseFragment<FragmentHomeBinding>() {
|
|
class HomeFragment : BaseFragment<FragmentHomeBinding>() {
|
|
|
private val viewModel: HomeViewModel by viewModels()
|
|
private val viewModel: HomeViewModel by viewModels()
|
|
|
- private val quickEntranceList = mutableListOf<MenuItemEntity>(
|
|
|
|
|
- MenuItemEntity(
|
|
|
|
|
- 0,
|
|
|
|
|
- R.mipmap.icon_job_manage_create_job,
|
|
|
|
|
- RoleFunctionalPermissionsEnum.CREATE_JOB.description,
|
|
|
|
|
- RoleFunctionalPermissionsEnum.CREATE_JOB.functionalPermission
|
|
|
|
|
- )
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ private val quickEntranceList: MutableList<QuickEntranceMenuItemEntity>
|
|
|
|
|
+ get() {
|
|
|
|
|
+ val quickEntryConfigJson = MMKVConstants.KEY_QUICK_ENTRY_CONFIG.getMMKVData("")
|
|
|
|
|
+ return if (quickEntryConfigJson.isEmpty()) {
|
|
|
|
|
+ mutableListOf<QuickEntranceMenuItemEntity>(
|
|
|
|
|
+ QuickEntranceMenuItemEntity(
|
|
|
|
|
+ 0,
|
|
|
|
|
+ R.mipmap.icon_job_manage_create_job,
|
|
|
|
|
+ RoleFunctionalPermissionsEnum.CREATE_JOB.description,
|
|
|
|
|
+ RoleFunctionalPermissionsEnum.CREATE_JOB.functionalPermission
|
|
|
|
|
+ )
|
|
|
|
|
+ )
|
|
|
|
|
+ } else {
|
|
|
|
|
+ Gson().fromJson<MutableList<QuickEntranceMenuItemEntity>>(
|
|
|
|
|
+ quickEntryConfigJson,
|
|
|
|
|
+ object : TypeToken<MutableList<QuickEntranceMenuItemEntity>>() {}.type
|
|
|
|
|
+ )
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
override fun getLayoutId(): Int {
|
|
override fun getLayoutId(): Int {
|
|
|
return R.layout.fragment_home
|
|
return R.layout.fragment_home
|
|
@@ -50,11 +67,14 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
|
|
|
binding.quickEntranceRv.apply {
|
|
binding.quickEntranceRv.apply {
|
|
|
linear(orientation = LinearLayout.HORIZONTAL)
|
|
linear(orientation = LinearLayout.HORIZONTAL)
|
|
|
}.setup {
|
|
}.setup {
|
|
|
- addType<MenuItemEntity>(R.layout.item_home_quick_entrance)
|
|
|
|
|
|
|
+ addType<QuickEntranceMenuItemEntity>(R.layout.item_home_quick_entrance)
|
|
|
onBind {
|
|
onBind {
|
|
|
onQuickEntranceBinding(this)
|
|
onQuickEntranceBinding(this)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ binding.quickEntranceConfig.setDebouncedClickListener {
|
|
|
|
|
+ quickEntranceConfig()
|
|
|
|
|
+ }
|
|
|
binding.realTimeDataZone.text = getString(R.string.all)
|
|
binding.realTimeDataZone.text = getString(R.string.all)
|
|
|
binding.overviewDataZone.text = getString(R.string.all)
|
|
binding.overviewDataZone.text = getString(R.string.all)
|
|
|
binding.lockMode.text = getString(R.string.all)
|
|
binding.lockMode.text = getString(R.string.all)
|
|
@@ -89,8 +109,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
|
|
|
binding.allJobNum.setDebouncedClickListener {
|
|
binding.allJobNum.setDebouncedClickListener {
|
|
|
BottomNavVisibilityEvent.sendBottomNavVisibilityEvent(false)
|
|
BottomNavVisibilityEvent.sendBottomNavVisibilityEvent(false)
|
|
|
JumpViewEvent.sendJumpViewEvent(
|
|
JumpViewEvent.sendJumpViewEvent(
|
|
|
- R.navigation.nav_job_manage,
|
|
|
|
|
- R.id.action_jobManageHomeFragment_to_jobManageFragment
|
|
|
|
|
|
|
+ R.navigation.nav_job_manage, R.id.action_jobManageHomeFragment_to_jobManageFragment
|
|
|
)
|
|
)
|
|
|
}
|
|
}
|
|
|
binding.startTime.setDebouncedClickListener {
|
|
binding.startTime.setDebouncedClickListener {
|
|
@@ -105,51 +124,56 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 快捷入口配置
|
|
|
|
|
+ */
|
|
|
|
|
+ private fun quickEntranceConfig() {
|
|
|
|
|
+ QuickEntranceConfigDialog.show(requireContext()) {
|
|
|
|
|
+ binding.quickEntranceRv.models = quickEntranceList
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private fun pickDateTime(startTime: Boolean = true, timeView: TextView) {
|
|
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()
|
|
|
|
|
|
|
+ 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
|
|
|
)
|
|
)
|
|
|
- .setOnChoose { millisecond ->
|
|
|
|
|
- val chooseTime = TimeUtils.formatDate(
|
|
|
|
|
- Date(millisecond),
|
|
|
|
|
- TimeUtils.DEFAULT_DATE_HOUR_MIN_FORMAT
|
|
|
|
|
- )
|
|
|
|
|
- if (startTime && binding.endTime.text.isNotEmpty()) {
|
|
|
|
|
- if (TimeUtils.isTimeBefore(
|
|
|
|
|
- binding.endTime.text.toString(),
|
|
|
|
|
- chooseTime,
|
|
|
|
|
- TimeUtils.DEFAULT_DATE_HOUR_MIN_FORMAT
|
|
|
|
|
- )
|
|
|
|
|
- ) {
|
|
|
|
|
- PopTip.build().tip(R.string.start_time_must_large_then_end_time)
|
|
|
|
|
- return@setOnChoose
|
|
|
|
|
- }
|
|
|
|
|
- } else {
|
|
|
|
|
- if (TimeUtils.isTimeBefore(
|
|
|
|
|
- chooseTime,
|
|
|
|
|
- binding.startTime.text.toString(),
|
|
|
|
|
- TimeUtils.DEFAULT_DATE_HOUR_MIN_FORMAT
|
|
|
|
|
- )
|
|
|
|
|
- ) {
|
|
|
|
|
- PopTip.build().tip(R.string.start_time_must_large_then_end_time)
|
|
|
|
|
- return@setOnChoose
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if (startTime && binding.endTime.text.isNotEmpty()) {
|
|
|
|
|
+ if (TimeUtils.isTimeBefore(
|
|
|
|
|
+ binding.endTime.text.toString(),
|
|
|
|
|
+ chooseTime,
|
|
|
|
|
+ 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
|
|
|
|
|
|
|
+ } else {
|
|
|
|
|
+ if (TimeUtils.isTimeBefore(
|
|
|
|
|
+ chooseTime,
|
|
|
|
|
+ binding.startTime.text.toString(),
|
|
|
|
|
+ TimeUtils.DEFAULT_DATE_HOUR_MIN_FORMAT
|
|
|
|
|
+ )
|
|
|
|
|
+ ) {
|
|
|
|
|
+ PopTip.build().tip(R.string.start_time_must_large_then_end_time)
|
|
|
|
|
+ return@setOnChoose
|
|
|
}
|
|
}
|
|
|
- getHomeData()
|
|
|
|
|
- }.build().show()
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ val timeStr = TimeUtils.formatDate(
|
|
|
|
|
+ Date(millisecond), TimeUtils.DEFAULT_DATE_HOUR_MIN_FORMAT
|
|
|
|
|
+ )
|
|
|
|
|
+ timeView.text = timeStr
|
|
|
|
|
+ if (startTime) {
|
|
|
|
|
+ viewModel.startTime = timeStr
|
|
|
|
|
+ } else {
|
|
|
|
|
+ viewModel.endTime = timeStr
|
|
|
|
|
+ }
|
|
|
|
|
+ getHomeData()
|
|
|
|
|
+ }.build().show()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
override fun initData() {
|
|
override fun initData() {
|
|
@@ -170,21 +194,18 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private fun setWorkstationData(
|
|
private fun setWorkstationData(
|
|
|
- workstationTv: TextView,
|
|
|
|
|
- onSelected: (TextDropDownDialog.TextDropDownEntity) -> Unit
|
|
|
|
|
|
|
+ workstationTv: TextView, onSelected: (TextDropDownDialog.TextDropDownEntity) -> Unit
|
|
|
) {
|
|
) {
|
|
|
viewModel.getWorkstationData().observe(this) {
|
|
viewModel.getWorkstationData().observe(this) {
|
|
|
TextDropDownDialog.showSingle(
|
|
TextDropDownDialog.showSingle(
|
|
|
viewModel.workstationData.map {
|
|
viewModel.workstationData.map {
|
|
|
TextDropDownDialog.SimpleTextDropDownEntity(
|
|
TextDropDownDialog.SimpleTextDropDownEntity(
|
|
|
- dataId = it.workstationId,
|
|
|
|
|
- dataText = it.workstationName
|
|
|
|
|
|
|
+ dataId = it.workstationId, dataText = it.workstationName
|
|
|
)
|
|
)
|
|
|
}.toMutableList().apply {
|
|
}.toMutableList().apply {
|
|
|
add(
|
|
add(
|
|
|
0, TextDropDownDialog.SimpleTextDropDownEntity(
|
|
0, TextDropDownDialog.SimpleTextDropDownEntity(
|
|
|
- dataId = 0,
|
|
|
|
|
- dataText = getString(R.string.all)
|
|
|
|
|
|
|
+ dataId = 0, dataText = getString(R.string.all)
|
|
|
)
|
|
)
|
|
|
)
|
|
)
|
|
|
}, workstationTv
|
|
}, workstationTv
|
|
@@ -201,14 +222,12 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
|
|
|
TextDropDownDialog.showSingle(
|
|
TextDropDownDialog.showSingle(
|
|
|
workflowModes.map {
|
|
workflowModes.map {
|
|
|
TextDropDownDialog.SimpleTextDropDownEntity(
|
|
TextDropDownDialog.SimpleTextDropDownEntity(
|
|
|
- dataId = it.modeId,
|
|
|
|
|
- dataText = it.modeTitle.toString()
|
|
|
|
|
|
|
+ dataId = it.modeId, dataText = it.modeTitle.toString()
|
|
|
)
|
|
)
|
|
|
}.toMutableList().apply {
|
|
}.toMutableList().apply {
|
|
|
add(
|
|
add(
|
|
|
0, TextDropDownDialog.SimpleTextDropDownEntity(
|
|
0, TextDropDownDialog.SimpleTextDropDownEntity(
|
|
|
- dataId = 0,
|
|
|
|
|
- dataText = getString(R.string.all)
|
|
|
|
|
|
|
+ dataId = 0, dataText = getString(R.string.all)
|
|
|
)
|
|
)
|
|
|
)
|
|
)
|
|
|
}, binding.lockMode
|
|
}, binding.lockMode
|
|
@@ -226,7 +245,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
|
|
|
|
|
|
|
|
private fun BindingAdapter.BindingViewHolder.onQuickEntranceBinding(holder: BindingAdapter.BindingViewHolder) {
|
|
private fun BindingAdapter.BindingViewHolder.onQuickEntranceBinding(holder: BindingAdapter.BindingViewHolder) {
|
|
|
val itemBinding = holder.getBinding<ItemHomeQuickEntranceBinding>()
|
|
val itemBinding = holder.getBinding<ItemHomeQuickEntranceBinding>()
|
|
|
- val item = holder.getModel<MenuItemEntity>()
|
|
|
|
|
|
|
+ val item = holder.getModel<QuickEntranceMenuItemEntity>()
|
|
|
itemBinding.homeMenuIv.setImageResource(item.menuIconId)
|
|
itemBinding.homeMenuIv.setImageResource(item.menuIconId)
|
|
|
itemBinding.homeMenuTv.text = item.menuText
|
|
itemBinding.homeMenuTv.text = item.menuText
|
|
|
itemBinding.root.setOnClickListener {
|
|
itemBinding.root.setOnClickListener {
|