diff --git a/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt b/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt index 963fceb..7e31cba 100644 --- a/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt +++ b/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt @@ -3,17 +3,106 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.ViewGroup +import androidx.lifecycle.ViewModelProvider +import com.casic.br.app.R import com.casic.br.app.databinding.FragmentCheckManifestBinding +import com.casic.br.app.model.CheckManifestModel +import com.casic.br.app.vm.CheckManifestViewModel +import com.casic.br.app.vm.ConfigViewModel +import com.casic.br.app.widgets.CheckStandardSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment class CheckManifestFragment(private val detectedScene: String) : KotlinBaseFragment() { + + private val kTag = "CheckManifestFragment" + private lateinit var configViewModel: ConfigViewModel + private lateinit var checkManifestViewModel: CheckManifestViewModel + override fun initEvent() { } override fun initOnCreate(savedInstanceState: Bundle?) { + //detectedScene转为字典值 + configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] + configViewModel.getDictionaryByCode(requireContext(), "securityScene") + configViewModel.dictionary.observe(this) { + if (it.code == 200) { + for (dic in it.data) { + if (dic.name == detectedScene) { + checkManifestViewModel.getCheckManifestByPage( + requireContext(), "", "", dic.value, 1 + ) + return@observe + } + } + } + } + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] + checkManifestViewModel.manifestResult.observe(this) { + if (it.code == 200) { + //去重 + val mainClassSet = HashSet() + it.data.rows.forEach { row -> + mainClassSet.add(row.typeName) + } + val typeNameAdapter = object : NormalRecyclerAdapter( + R.layout.item_hidden_trouble_l_2, mainClassSet.toMutableList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder.setText(R.id.troubleMainClassView, item) + } + } + binding.leftRecyclerView.adapter = typeNameAdapter + + if (mainClassSet.isEmpty()) { + return@observe + } + //默认加载第一项的数据 + initSubRecyclerView(it, mainClassSet.first()) + typeNameAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { + initSubRecyclerView(it, t) + } + }) + } + } + } + + private fun initSubRecyclerView(parent: CheckManifestModel, selectedType: String) { + //根据大类查询隐患内容 + val contentSet = HashSet() + for (row in parent.data.rows) { + if (row.typeName == selectedType) { + contentSet.add(row.checkItem) + } + } + val contentAdapter = object : NormalRecyclerAdapter( + R.layout.item_hidden_trouble_l_3, contentSet.toMutableList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder.setText(R.id.troubleIndexView, "${position + 1}、") + .setText(R.id.troubleNameView, item) + .setOnClickListener(R.id.showImageView) { + //显示行业标准 + for (row in parent.data.rows) { + if (row.checkItem == item) { + CheckStandardSheet.Builder() + .setContext(requireContext()) + .setActionValue(row.checkStandard) + .build().show() + return@setOnClickListener + } + } + } + } + } + binding.rightRecyclerView.adapter = contentAdapter } override fun initViewBinding( diff --git a/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt b/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt index 963fceb..7e31cba 100644 --- a/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt +++ b/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt @@ -3,17 +3,106 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.ViewGroup +import androidx.lifecycle.ViewModelProvider +import com.casic.br.app.R import com.casic.br.app.databinding.FragmentCheckManifestBinding +import com.casic.br.app.model.CheckManifestModel +import com.casic.br.app.vm.CheckManifestViewModel +import com.casic.br.app.vm.ConfigViewModel +import com.casic.br.app.widgets.CheckStandardSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment class CheckManifestFragment(private val detectedScene: String) : KotlinBaseFragment() { + + private val kTag = "CheckManifestFragment" + private lateinit var configViewModel: ConfigViewModel + private lateinit var checkManifestViewModel: CheckManifestViewModel + override fun initEvent() { } override fun initOnCreate(savedInstanceState: Bundle?) { + //detectedScene转为字典值 + configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] + configViewModel.getDictionaryByCode(requireContext(), "securityScene") + configViewModel.dictionary.observe(this) { + if (it.code == 200) { + for (dic in it.data) { + if (dic.name == detectedScene) { + checkManifestViewModel.getCheckManifestByPage( + requireContext(), "", "", dic.value, 1 + ) + return@observe + } + } + } + } + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] + checkManifestViewModel.manifestResult.observe(this) { + if (it.code == 200) { + //去重 + val mainClassSet = HashSet() + it.data.rows.forEach { row -> + mainClassSet.add(row.typeName) + } + val typeNameAdapter = object : NormalRecyclerAdapter( + R.layout.item_hidden_trouble_l_2, mainClassSet.toMutableList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder.setText(R.id.troubleMainClassView, item) + } + } + binding.leftRecyclerView.adapter = typeNameAdapter + + if (mainClassSet.isEmpty()) { + return@observe + } + //默认加载第一项的数据 + initSubRecyclerView(it, mainClassSet.first()) + typeNameAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { + initSubRecyclerView(it, t) + } + }) + } + } + } + + private fun initSubRecyclerView(parent: CheckManifestModel, selectedType: String) { + //根据大类查询隐患内容 + val contentSet = HashSet() + for (row in parent.data.rows) { + if (row.typeName == selectedType) { + contentSet.add(row.checkItem) + } + } + val contentAdapter = object : NormalRecyclerAdapter( + R.layout.item_hidden_trouble_l_3, contentSet.toMutableList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder.setText(R.id.troubleIndexView, "${position + 1}、") + .setText(R.id.troubleNameView, item) + .setOnClickListener(R.id.showImageView) { + //显示行业标准 + for (row in parent.data.rows) { + if (row.checkItem == item) { + CheckStandardSheet.Builder() + .setContext(requireContext()) + .setActionValue(row.checkStandard) + .build().show() + return@setOnClickListener + } + } + } + } + } + binding.rightRecyclerView.adapter = contentAdapter } override fun initViewBinding( diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt index 48e56d4..dfc956f 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt @@ -1,6 +1,5 @@ package com.casic.br.app.view -import android.animation.ValueAnimator import android.os.Bundle import androidx.fragment.app.Fragment import com.casic.br.app.adapter.TopViewPagerAdapter @@ -9,7 +8,6 @@ import com.casic.br.app.fragment.HiddenTroubleFragment import com.casic.br.app.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.getScreenHeight import com.pengxh.kt.lite.utils.Constant class CheckManifestBySceneActivity : KotlinBaseActivity() { @@ -21,16 +19,6 @@ } override fun initOnCreate(savedInstanceState: Bundle?) { - val measuredHeight = getScreenHeight() - val animator = ValueAnimator.ofInt(measuredHeight, (measuredHeight * 0.9).toInt()) - animator.addUpdateListener { - val value = it.animatedValue as Int - binding.rootView.layoutParams.height = value - binding.rootView.requestLayout() - } - animator.duration = 500 - animator.start() - val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM) as ArrayList fragmentPages.add(CheckManifestFragment(args[0])) diff --git a/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt b/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt index 963fceb..7e31cba 100644 --- a/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt +++ b/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt @@ -3,17 +3,106 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.ViewGroup +import androidx.lifecycle.ViewModelProvider +import com.casic.br.app.R import com.casic.br.app.databinding.FragmentCheckManifestBinding +import com.casic.br.app.model.CheckManifestModel +import com.casic.br.app.vm.CheckManifestViewModel +import com.casic.br.app.vm.ConfigViewModel +import com.casic.br.app.widgets.CheckStandardSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment class CheckManifestFragment(private val detectedScene: String) : KotlinBaseFragment() { + + private val kTag = "CheckManifestFragment" + private lateinit var configViewModel: ConfigViewModel + private lateinit var checkManifestViewModel: CheckManifestViewModel + override fun initEvent() { } override fun initOnCreate(savedInstanceState: Bundle?) { + //detectedScene转为字典值 + configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] + configViewModel.getDictionaryByCode(requireContext(), "securityScene") + configViewModel.dictionary.observe(this) { + if (it.code == 200) { + for (dic in it.data) { + if (dic.name == detectedScene) { + checkManifestViewModel.getCheckManifestByPage( + requireContext(), "", "", dic.value, 1 + ) + return@observe + } + } + } + } + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] + checkManifestViewModel.manifestResult.observe(this) { + if (it.code == 200) { + //去重 + val mainClassSet = HashSet() + it.data.rows.forEach { row -> + mainClassSet.add(row.typeName) + } + val typeNameAdapter = object : NormalRecyclerAdapter( + R.layout.item_hidden_trouble_l_2, mainClassSet.toMutableList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder.setText(R.id.troubleMainClassView, item) + } + } + binding.leftRecyclerView.adapter = typeNameAdapter + + if (mainClassSet.isEmpty()) { + return@observe + } + //默认加载第一项的数据 + initSubRecyclerView(it, mainClassSet.first()) + typeNameAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { + initSubRecyclerView(it, t) + } + }) + } + } + } + + private fun initSubRecyclerView(parent: CheckManifestModel, selectedType: String) { + //根据大类查询隐患内容 + val contentSet = HashSet() + for (row in parent.data.rows) { + if (row.typeName == selectedType) { + contentSet.add(row.checkItem) + } + } + val contentAdapter = object : NormalRecyclerAdapter( + R.layout.item_hidden_trouble_l_3, contentSet.toMutableList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder.setText(R.id.troubleIndexView, "${position + 1}、") + .setText(R.id.troubleNameView, item) + .setOnClickListener(R.id.showImageView) { + //显示行业标准 + for (row in parent.data.rows) { + if (row.checkItem == item) { + CheckStandardSheet.Builder() + .setContext(requireContext()) + .setActionValue(row.checkStandard) + .build().show() + return@setOnClickListener + } + } + } + } + } + binding.rightRecyclerView.adapter = contentAdapter } override fun initViewBinding( diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt index 48e56d4..dfc956f 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt @@ -1,6 +1,5 @@ package com.casic.br.app.view -import android.animation.ValueAnimator import android.os.Bundle import androidx.fragment.app.Fragment import com.casic.br.app.adapter.TopViewPagerAdapter @@ -9,7 +8,6 @@ import com.casic.br.app.fragment.HiddenTroubleFragment import com.casic.br.app.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.getScreenHeight import com.pengxh.kt.lite.utils.Constant class CheckManifestBySceneActivity : KotlinBaseActivity() { @@ -21,16 +19,6 @@ } override fun initOnCreate(savedInstanceState: Bundle?) { - val measuredHeight = getScreenHeight() - val animator = ValueAnimator.ofInt(measuredHeight, (measuredHeight * 0.9).toInt()) - animator.addUpdateListener { - val value = it.animatedValue as Int - binding.rootView.layoutParams.height = value - binding.rootView.requestLayout() - } - animator.duration = 500 - animator.start() - val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM) as ArrayList fragmentPages.add(CheckManifestFragment(args[0])) diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt index 6c7e7e5..bd8ebec 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt @@ -99,7 +99,7 @@ 2024030402 -> { hiddenTroubleAdapter = object : NormalRecyclerAdapter( - R.layout.item_hidden_trouble, dataBeans + R.layout.item_hidden_trouble_l, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, diff --git a/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt b/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt index 963fceb..7e31cba 100644 --- a/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt +++ b/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt @@ -3,17 +3,106 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.ViewGroup +import androidx.lifecycle.ViewModelProvider +import com.casic.br.app.R import com.casic.br.app.databinding.FragmentCheckManifestBinding +import com.casic.br.app.model.CheckManifestModel +import com.casic.br.app.vm.CheckManifestViewModel +import com.casic.br.app.vm.ConfigViewModel +import com.casic.br.app.widgets.CheckStandardSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment class CheckManifestFragment(private val detectedScene: String) : KotlinBaseFragment() { + + private val kTag = "CheckManifestFragment" + private lateinit var configViewModel: ConfigViewModel + private lateinit var checkManifestViewModel: CheckManifestViewModel + override fun initEvent() { } override fun initOnCreate(savedInstanceState: Bundle?) { + //detectedScene转为字典值 + configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] + configViewModel.getDictionaryByCode(requireContext(), "securityScene") + configViewModel.dictionary.observe(this) { + if (it.code == 200) { + for (dic in it.data) { + if (dic.name == detectedScene) { + checkManifestViewModel.getCheckManifestByPage( + requireContext(), "", "", dic.value, 1 + ) + return@observe + } + } + } + } + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] + checkManifestViewModel.manifestResult.observe(this) { + if (it.code == 200) { + //去重 + val mainClassSet = HashSet() + it.data.rows.forEach { row -> + mainClassSet.add(row.typeName) + } + val typeNameAdapter = object : NormalRecyclerAdapter( + R.layout.item_hidden_trouble_l_2, mainClassSet.toMutableList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder.setText(R.id.troubleMainClassView, item) + } + } + binding.leftRecyclerView.adapter = typeNameAdapter + + if (mainClassSet.isEmpty()) { + return@observe + } + //默认加载第一项的数据 + initSubRecyclerView(it, mainClassSet.first()) + typeNameAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { + initSubRecyclerView(it, t) + } + }) + } + } + } + + private fun initSubRecyclerView(parent: CheckManifestModel, selectedType: String) { + //根据大类查询隐患内容 + val contentSet = HashSet() + for (row in parent.data.rows) { + if (row.typeName == selectedType) { + contentSet.add(row.checkItem) + } + } + val contentAdapter = object : NormalRecyclerAdapter( + R.layout.item_hidden_trouble_l_3, contentSet.toMutableList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder.setText(R.id.troubleIndexView, "${position + 1}、") + .setText(R.id.troubleNameView, item) + .setOnClickListener(R.id.showImageView) { + //显示行业标准 + for (row in parent.data.rows) { + if (row.checkItem == item) { + CheckStandardSheet.Builder() + .setContext(requireContext()) + .setActionValue(row.checkStandard) + .build().show() + return@setOnClickListener + } + } + } + } + } + binding.rightRecyclerView.adapter = contentAdapter } override fun initViewBinding( diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt index 48e56d4..dfc956f 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt @@ -1,6 +1,5 @@ package com.casic.br.app.view -import android.animation.ValueAnimator import android.os.Bundle import androidx.fragment.app.Fragment import com.casic.br.app.adapter.TopViewPagerAdapter @@ -9,7 +8,6 @@ import com.casic.br.app.fragment.HiddenTroubleFragment import com.casic.br.app.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.getScreenHeight import com.pengxh.kt.lite.utils.Constant class CheckManifestBySceneActivity : KotlinBaseActivity() { @@ -21,16 +19,6 @@ } override fun initOnCreate(savedInstanceState: Bundle?) { - val measuredHeight = getScreenHeight() - val animator = ValueAnimator.ofInt(measuredHeight, (measuredHeight * 0.9).toInt()) - animator.addUpdateListener { - val value = it.animatedValue as Int - binding.rootView.layoutParams.height = value - binding.rootView.requestLayout() - } - animator.duration = 500 - animator.start() - val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM) as ArrayList fragmentPages.add(CheckManifestFragment(args[0])) diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt index 6c7e7e5..bd8ebec 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt @@ -99,7 +99,7 @@ 2024030402 -> { hiddenTroubleAdapter = object : NormalRecyclerAdapter( - R.layout.item_hidden_trouble, dataBeans + R.layout.item_hidden_trouble_l, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, diff --git a/app/src/main/java/com/casic/br/app/vm/HiddenTroubleViewModel.kt b/app/src/main/java/com/casic/br/app/vm/HiddenTroubleViewModel.kt index 6508312..3b9160f 100644 --- a/app/src/main/java/com/casic/br/app/vm/HiddenTroubleViewModel.kt +++ b/app/src/main/java/com/casic/br/app/vm/HiddenTroubleViewModel.kt @@ -32,11 +32,7 @@ ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.addHiddenTrouble( - mainType, - subType, - hiddenTroubleName, - hiddenTroubleContent, - hiddenTroubleImageArray + mainType, subType, hiddenTroubleName, hiddenTroubleContent, hiddenTroubleImageArray ) when (response.getResponseCode()) { 200 -> { diff --git a/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt b/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt index 963fceb..7e31cba 100644 --- a/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt +++ b/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt @@ -3,17 +3,106 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.ViewGroup +import androidx.lifecycle.ViewModelProvider +import com.casic.br.app.R import com.casic.br.app.databinding.FragmentCheckManifestBinding +import com.casic.br.app.model.CheckManifestModel +import com.casic.br.app.vm.CheckManifestViewModel +import com.casic.br.app.vm.ConfigViewModel +import com.casic.br.app.widgets.CheckStandardSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment class CheckManifestFragment(private val detectedScene: String) : KotlinBaseFragment() { + + private val kTag = "CheckManifestFragment" + private lateinit var configViewModel: ConfigViewModel + private lateinit var checkManifestViewModel: CheckManifestViewModel + override fun initEvent() { } override fun initOnCreate(savedInstanceState: Bundle?) { + //detectedScene转为字典值 + configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] + configViewModel.getDictionaryByCode(requireContext(), "securityScene") + configViewModel.dictionary.observe(this) { + if (it.code == 200) { + for (dic in it.data) { + if (dic.name == detectedScene) { + checkManifestViewModel.getCheckManifestByPage( + requireContext(), "", "", dic.value, 1 + ) + return@observe + } + } + } + } + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] + checkManifestViewModel.manifestResult.observe(this) { + if (it.code == 200) { + //去重 + val mainClassSet = HashSet() + it.data.rows.forEach { row -> + mainClassSet.add(row.typeName) + } + val typeNameAdapter = object : NormalRecyclerAdapter( + R.layout.item_hidden_trouble_l_2, mainClassSet.toMutableList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder.setText(R.id.troubleMainClassView, item) + } + } + binding.leftRecyclerView.adapter = typeNameAdapter + + if (mainClassSet.isEmpty()) { + return@observe + } + //默认加载第一项的数据 + initSubRecyclerView(it, mainClassSet.first()) + typeNameAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { + initSubRecyclerView(it, t) + } + }) + } + } + } + + private fun initSubRecyclerView(parent: CheckManifestModel, selectedType: String) { + //根据大类查询隐患内容 + val contentSet = HashSet() + for (row in parent.data.rows) { + if (row.typeName == selectedType) { + contentSet.add(row.checkItem) + } + } + val contentAdapter = object : NormalRecyclerAdapter( + R.layout.item_hidden_trouble_l_3, contentSet.toMutableList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder.setText(R.id.troubleIndexView, "${position + 1}、") + .setText(R.id.troubleNameView, item) + .setOnClickListener(R.id.showImageView) { + //显示行业标准 + for (row in parent.data.rows) { + if (row.checkItem == item) { + CheckStandardSheet.Builder() + .setContext(requireContext()) + .setActionValue(row.checkStandard) + .build().show() + return@setOnClickListener + } + } + } + } + } + binding.rightRecyclerView.adapter = contentAdapter } override fun initViewBinding( diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt index 48e56d4..dfc956f 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt @@ -1,6 +1,5 @@ package com.casic.br.app.view -import android.animation.ValueAnimator import android.os.Bundle import androidx.fragment.app.Fragment import com.casic.br.app.adapter.TopViewPagerAdapter @@ -9,7 +8,6 @@ import com.casic.br.app.fragment.HiddenTroubleFragment import com.casic.br.app.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.getScreenHeight import com.pengxh.kt.lite.utils.Constant class CheckManifestBySceneActivity : KotlinBaseActivity() { @@ -21,16 +19,6 @@ } override fun initOnCreate(savedInstanceState: Bundle?) { - val measuredHeight = getScreenHeight() - val animator = ValueAnimator.ofInt(measuredHeight, (measuredHeight * 0.9).toInt()) - animator.addUpdateListener { - val value = it.animatedValue as Int - binding.rootView.layoutParams.height = value - binding.rootView.requestLayout() - } - animator.duration = 500 - animator.start() - val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM) as ArrayList fragmentPages.add(CheckManifestFragment(args[0])) diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt index 6c7e7e5..bd8ebec 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt @@ -99,7 +99,7 @@ 2024030402 -> { hiddenTroubleAdapter = object : NormalRecyclerAdapter( - R.layout.item_hidden_trouble, dataBeans + R.layout.item_hidden_trouble_l, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, diff --git a/app/src/main/java/com/casic/br/app/vm/HiddenTroubleViewModel.kt b/app/src/main/java/com/casic/br/app/vm/HiddenTroubleViewModel.kt index 6508312..3b9160f 100644 --- a/app/src/main/java/com/casic/br/app/vm/HiddenTroubleViewModel.kt +++ b/app/src/main/java/com/casic/br/app/vm/HiddenTroubleViewModel.kt @@ -32,11 +32,7 @@ ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.addHiddenTrouble( - mainType, - subType, - hiddenTroubleName, - hiddenTroubleContent, - hiddenTroubleImageArray + mainType, subType, hiddenTroubleName, hiddenTroubleContent, hiddenTroubleImageArray ) when (response.getResponseCode()) { 200 -> { diff --git a/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt b/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt new file mode 100644 index 0000000..8c32684 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt @@ -0,0 +1,51 @@ +package com.casic.br.app.widgets + +import android.app.Dialog +import android.content.Context +import android.os.Bundle +import android.view.Gravity +import com.casic.br.app.R +import com.casic.br.app.databinding.CheckStandardSheetBinding +import com.pengxh.kt.lite.extensions.binding +import com.pengxh.kt.lite.extensions.resetParams + +/** + * 底部Sheet + */ +class CheckStandardSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + private val value: String = builder.value + + class Builder { + lateinit var context: Context + lateinit var value: String + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setActionValue(value: String): Builder { + this.value = value + return this + } + + fun build(): CheckStandardSheet { + return CheckStandardSheet(this) + } + } + + private val binding: CheckStandardSheetBinding by binding() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1f) + setCancelable(true) + setCanceledOnTouchOutside(true) + + binding.checkStandardView.text = value + + binding.sheetCancelView.setOnClickListener { dismiss() } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt b/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt index 963fceb..7e31cba 100644 --- a/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt +++ b/app/src/main/java/com/casic/br/app/fragment/CheckManifestFragment.kt @@ -3,17 +3,106 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.ViewGroup +import androidx.lifecycle.ViewModelProvider +import com.casic.br.app.R import com.casic.br.app.databinding.FragmentCheckManifestBinding +import com.casic.br.app.model.CheckManifestModel +import com.casic.br.app.vm.CheckManifestViewModel +import com.casic.br.app.vm.ConfigViewModel +import com.casic.br.app.widgets.CheckStandardSheet +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment class CheckManifestFragment(private val detectedScene: String) : KotlinBaseFragment() { + + private val kTag = "CheckManifestFragment" + private lateinit var configViewModel: ConfigViewModel + private lateinit var checkManifestViewModel: CheckManifestViewModel + override fun initEvent() { } override fun initOnCreate(savedInstanceState: Bundle?) { + //detectedScene转为字典值 + configViewModel = ViewModelProvider(this)[ConfigViewModel::class.java] + configViewModel.getDictionaryByCode(requireContext(), "securityScene") + configViewModel.dictionary.observe(this) { + if (it.code == 200) { + for (dic in it.data) { + if (dic.name == detectedScene) { + checkManifestViewModel.getCheckManifestByPage( + requireContext(), "", "", dic.value, 1 + ) + return@observe + } + } + } + } + checkManifestViewModel = ViewModelProvider(this)[CheckManifestViewModel::class.java] + checkManifestViewModel.manifestResult.observe(this) { + if (it.code == 200) { + //去重 + val mainClassSet = HashSet() + it.data.rows.forEach { row -> + mainClassSet.add(row.typeName) + } + val typeNameAdapter = object : NormalRecyclerAdapter( + R.layout.item_hidden_trouble_l_2, mainClassSet.toMutableList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder.setText(R.id.troubleMainClassView, item) + } + } + binding.leftRecyclerView.adapter = typeNameAdapter + + if (mainClassSet.isEmpty()) { + return@observe + } + //默认加载第一项的数据 + initSubRecyclerView(it, mainClassSet.first()) + typeNameAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { + initSubRecyclerView(it, t) + } + }) + } + } + } + + private fun initSubRecyclerView(parent: CheckManifestModel, selectedType: String) { + //根据大类查询隐患内容 + val contentSet = HashSet() + for (row in parent.data.rows) { + if (row.typeName == selectedType) { + contentSet.add(row.checkItem) + } + } + val contentAdapter = object : NormalRecyclerAdapter( + R.layout.item_hidden_trouble_l_3, contentSet.toMutableList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder.setText(R.id.troubleIndexView, "${position + 1}、") + .setText(R.id.troubleNameView, item) + .setOnClickListener(R.id.showImageView) { + //显示行业标准 + for (row in parent.data.rows) { + if (row.checkItem == item) { + CheckStandardSheet.Builder() + .setContext(requireContext()) + .setActionValue(row.checkStandard) + .build().show() + return@setOnClickListener + } + } + } + } + } + binding.rightRecyclerView.adapter = contentAdapter } override fun initViewBinding( diff --git a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt index 48e56d4..dfc956f 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckManifestBySceneActivity.kt @@ -1,6 +1,5 @@ package com.casic.br.app.view -import android.animation.ValueAnimator import android.os.Bundle import androidx.fragment.app.Fragment import com.casic.br.app.adapter.TopViewPagerAdapter @@ -9,7 +8,6 @@ import com.casic.br.app.fragment.HiddenTroubleFragment import com.casic.br.app.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.getScreenHeight import com.pengxh.kt.lite.utils.Constant class CheckManifestBySceneActivity : KotlinBaseActivity() { @@ -21,16 +19,6 @@ } override fun initOnCreate(savedInstanceState: Bundle?) { - val measuredHeight = getScreenHeight() - val animator = ValueAnimator.ofInt(measuredHeight, (measuredHeight * 0.9).toInt()) - animator.addUpdateListener { - val value = it.animatedValue as Int - binding.rootView.layoutParams.height = value - binding.rootView.requestLayout() - } - animator.duration = 500 - animator.start() - val args = intent.getStringArrayListExtra(Constant.INTENT_PARAM) as ArrayList fragmentPages.add(CheckManifestFragment(args[0])) diff --git a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt index 6c7e7e5..bd8ebec 100644 --- a/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/HiddenTroubleActivity.kt @@ -99,7 +99,7 @@ 2024030402 -> { hiddenTroubleAdapter = object : NormalRecyclerAdapter( - R.layout.item_hidden_trouble, dataBeans + R.layout.item_hidden_trouble_l, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, diff --git a/app/src/main/java/com/casic/br/app/vm/HiddenTroubleViewModel.kt b/app/src/main/java/com/casic/br/app/vm/HiddenTroubleViewModel.kt index 6508312..3b9160f 100644 --- a/app/src/main/java/com/casic/br/app/vm/HiddenTroubleViewModel.kt +++ b/app/src/main/java/com/casic/br/app/vm/HiddenTroubleViewModel.kt @@ -32,11 +32,7 @@ ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.addHiddenTrouble( - mainType, - subType, - hiddenTroubleName, - hiddenTroubleContent, - hiddenTroubleImageArray + mainType, subType, hiddenTroubleName, hiddenTroubleContent, hiddenTroubleImageArray ) when (response.getResponseCode()) { 200 -> { diff --git a/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt b/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt new file mode 100644 index 0000000..8c32684 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/widgets/CheckStandardSheet.kt @@ -0,0 +1,51 @@ +package com.casic.br.app.widgets + +import android.app.Dialog +import android.content.Context +import android.os.Bundle +import android.view.Gravity +import com.casic.br.app.R +import com.casic.br.app.databinding.CheckStandardSheetBinding +import com.pengxh.kt.lite.extensions.binding +import com.pengxh.kt.lite.extensions.resetParams + +/** + * 底部Sheet + */ +class CheckStandardSheet private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedActionStyle +) { + private val value: String = builder.value + + class Builder { + lateinit var context: Context + lateinit var value: String + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setActionValue(value: String): Builder { + this.value = value + return this + } + + fun build(): CheckStandardSheet { + return CheckStandardSheet(this) + } + } + + private val binding: CheckStandardSheetBinding by binding() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.resetParams(Gravity.BOTTOM, R.style.ActionSheetDialogAnimation, 1f) + setCancelable(true) + setCanceledOnTouchOutside(true) + + binding.checkStandardView.text = value + + binding.sheetCancelView.setOnClickListener { dismiss() } + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_check_manifest_by_scene.xml b/app/src/main/res/layout/activity_check_manifest_by_scene.xml index b3c01c8..b2f6589 100644 --- a/app/src/main/res/layout/activity_check_manifest_by_scene.xml +++ b/app/src/main/res/layout/activity_check_manifest_by_scene.xml @@ -23,8 +23,7 @@