From e712fa230ac4f021d36cc66247f5f59b54e5b7e4 Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Sat, 20 Sep 2025 22:09:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E9=87=87=E6=96=B0=E5=A2=9E=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/src/main/AndroidManifest.xml | 3 +- .../adapter/AddMiningFaceAdapter.kt | 59 ++++ .../com/zmkg/coaloperation/bean/OtherData.kt | 14 +- .../mining/activity/AddMiningFaceActivity.kt | 277 ++++++------------ .../ui/mining/activity/MiningActivity.kt | 7 + .../activity/MiningFaceDetailActivity.kt | 5 +- .../res/layout/activity_add_mining_face.xml | 15 +- .../res/layout/list_item_add_mining_face.xml | 84 ++++++ 8 files changed, 265 insertions(+), 199 deletions(-) create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/AddMiningFaceAdapter.kt create mode 100644 coalMiningApp/app/src/main/res/layout/list_item_add_mining_face.xml diff --git a/coalMiningApp/app/src/main/AndroidManifest.xml b/coalMiningApp/app/src/main/AndroidManifest.xml index 2711d9f..1c35726 100644 --- a/coalMiningApp/app/src/main/AndroidManifest.xml +++ b/coalMiningApp/app/src/main/AndroidManifest.xml @@ -57,7 +57,8 @@ - + \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/AddMiningFaceAdapter.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/AddMiningFaceAdapter.kt new file mode 100644 index 0000000..85e0f98 --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/AddMiningFaceAdapter.kt @@ -0,0 +1,59 @@ +package com.zmkg.coaloperation.adapter + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.core.widget.addTextChangedListener +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.zmkg.coaloperation.R +import com.zmkg.coaloperation.bean.AddMiningFaceItem +import com.zmkg.coaloperation.databinding.ListItemAddMiningFaceBinding +import com.zmkg.coaloperation.utils.gone +import com.zmkg.coaloperation.utils.visible + +class AddMiningFaceAdapter(list: MutableList): + BaseQuickAdapter(R.layout.list_item_add_mining_face, list){ + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH { + val binding = ListItemAddMiningFaceBinding.inflate( + LayoutInflater.from(context), parent, false + ) + return VH(binding).also { + bindViewClickListener(it, viewType) + } + } + override fun convert( + holder: VH, + item: AddMiningFaceItem + ) { + holder.binding.let { + val index = holder.layoutPosition + it.imgExpand.run { + if (item.isShowArrowDown) visible() else gone() + } + it.tvFuncName.text = item.funcName + if (item.funcType == 0) { + it.etInputValue.run { + visible() + addTextChangedListener(onTextChanged = { text, start, before, count -> + item.funcValue = text.toString().trim() + }) + setText(item.funcValue) + } + it.tvSelectValue.gone() + } else { + it.etInputValue.gone() + it.tvSelectValue.run { + visible() + text = item.funcValue + tag = item.funcId + } + } + it.divider.run { + if (index == data.size - 1) gone() else visible() + } + } + } + + inner class VH(var binding: ListItemAddMiningFaceBinding): BaseViewHolder(binding.root) + + } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/bean/OtherData.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/bean/OtherData.kt index 4cb7990..b3de357 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/bean/OtherData.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/bean/OtherData.kt @@ -2,7 +2,17 @@ package com.zmkg.coaloperation.bean data class UserMenuBean( var menuName: String, - var iconResId:Int, + var iconResId: Int, var iconBgResId: Int, - val click:()-> Unit + val click: () -> Unit +) + +data class AddMiningFaceItem( + //0-输入框,1-选择弹窗 + var funcType: Int = 0, + var funcName: String = "", + var funcValue: String = "", + var funcId: String = "", + var isShowArrowDown: Boolean = false, + var onClick: () -> Unit = {} ) \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/AddMiningFaceActivity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/AddMiningFaceActivity.kt index 7e17016..1e60da7 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/AddMiningFaceActivity.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/AddMiningFaceActivity.kt @@ -4,13 +4,18 @@ import android.os.Bundle import android.text.TextUtils import android.view.View import android.widget.TextView +import androidx.recyclerview.widget.LinearLayoutManager import com.zmkg.coaloperation.R +import com.zmkg.coaloperation.adapter.AddMiningFaceAdapter import com.zmkg.coaloperation.base.BaseVMBActivity import com.zmkg.coaloperation.base.viewmodel.TestViewModel +import com.zmkg.coaloperation.bean.AddMiningFaceItem import com.zmkg.coaloperation.bean.WorkOption import com.zmkg.coaloperation.databinding.ActivityAddMiningFaceBinding import com.zmkg.coaloperation.db.entity.mining.MiningWorkingFaceEntity +import com.zmkg.coaloperation.ui.tunneling.activity.AddWorkingFaceActivity import com.zmkg.coaloperation.ui.tunneling.activity.WorkingFaceDetailActivity +import com.zmkg.coaloperation.utils.DictUtils import com.zmkg.coaloperation.utils.PickerUtil import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode @@ -42,6 +47,25 @@ class AddMiningFaceActivity : // } private var faceDetail: MiningWorkingFaceEntity? = null + private val miningList = mutableListOf() + private val addFaceAdapter by lazy { + AddMiningFaceAdapter(miningList).apply { + addChildClickViewIds(R.id.tvSelectValue, R.id.imgExpand) + setOnItemChildClickListener { adapter, view, position -> + if (view.id == R.id.tvSelectValue) { + miningList[position].onClick() + return@setOnItemChildClickListener + } + if (view.id == R.id.imgExpand) { + miningList.clear() + initMiningList(false) + notifyDataSetChanged() + return@setOnItemChildClickListener + } + } + } + } + override fun initView(savedInstanceState: Bundle?) { val stringExtra = intent.getStringExtra(WORK_FACE_TYPE) if (TextUtils.isEmpty(stringExtra)) { @@ -51,19 +75,14 @@ class AddMiningFaceActivity : WorkFaceType.ADD.name -> { currentFaceType = WorkFaceType.ADD mBinding.confirm.text = "确认新增" -// mBinding.toolbarLay.titleTvName.text = "新增工作面" mBinding.toolbarLay.title = "新增工作面" -// mBinding.expandLayout.gone() -// mBinding.imgExpand.visible() + initMiningList(true) } WorkFaceType.EDIT.name -> { currentFaceType = WorkFaceType.EDIT mBinding.confirm.text = "确认修改" -// mBinding.toolbarLay.titleTvName.text = "修改工作面" mBinding.toolbarLay.title = "修改工作面" -// mBinding.expandLayout.visible() -// mBinding.imgExpand.gone() faceDetail = intent.getParcelableExtra(WorkingFaceDetailActivity.Companion.FACE_WORK_DETAIL_DATA) as MiningWorkingFaceEntity? if (faceDetail == null) { @@ -73,73 +92,28 @@ class AddMiningFaceActivity : faceDetail?.let { loadDetail(it) } + initMiningList(false) } WorkFaceType.SEE.name -> { currentFaceType = WorkFaceType.SEE } } + mBinding.rvFaceList.let { + it.layoutManager = LinearLayoutManager(this) + it.adapter = addFaceAdapter + } -// mBinding.etPlanStartDate.let { -// it.setOnClickListener { _ -> -// showDatePicker(it) -// } -// } -// mBinding.etPlannEndDate.let { -// it.setOnClickListener { _ -> -// showDatePicker(it) -// } -// } // mBinding.tvSeamName.setOnClickListener { v -> -// PickerUtil.showOptionPicker(this, "请选择所属煤层", DictUtils.seamList) { option -> -// mBinding.tvSeamName.text = option.name -// mBinding.tvSeamName.tag = option.id -// seamAreaList = DictUtils.areaMap[option.id] ?: mutableListOf() -// } + // } // mBinding.tvAreaName.setOnClickListener { v -> -// if (seamAreaList.isEmpty()) { -// showToast("请先选择所属煤层") -// return@setOnClickListener -// } -// PickerUtil.showOptionPicker(this, "请选择所属采区域", seamAreaList) { option -> -// mBinding.tvAreaName.text = option.name -// mBinding.tvAreaName.tag = option.id -// } -// } -// mBinding.tvTunnelNature.setOnClickListener { v -> -// PickerUtil.showOptionPicker( -// this, -// "请选择巷道性质", -// DictUtils.seamRoadWayList -// ) { option -> -// mBinding.tvTunnelNature.text = option.name -// mBinding.tvTunnelNature.tag = option.id -// } + // } } private var seamAreaList: MutableList = mutableListOf() - private fun showDatePicker(tv: TextView) { - tv.setOnClickListener { - PickerUtil.showTimePicker(this, tv.text.toString().trim()) { date -> - tv.text = date - } - } -// val cal = Calendar.getInstance() -// DatePickerDialog( -// this, -// { view, year, month, day -> -// textView.text = "$year-${numToString(month + 1)}-${numToString(day)}" -// }, -// cal.get(Calendar.YEAR), -// cal.get(Calendar.MONTH), -// cal.get(Calendar.DAY_OF_MONTH) -// ) -// .show() - } - private fun numToString(num: Int): String { return if (num < 10) "0${num}" else num.toString() } @@ -149,9 +123,7 @@ class AddMiningFaceActivity : } override fun bindEvent() { - mBinding.apply { -// addClickViews(imgExpand, confirm) - } + } override fun createObserve() { @@ -185,82 +157,9 @@ class AddMiningFaceActivity : } private fun loadDetail(it: MiningWorkingFaceEntity) { -// mBinding.etWorkfaceName.setText(it.surfaceName) -// mBinding.etTotalFootage.setText("${it.totalFootage}") -// mBinding.tvSeamName.tag = it.seamId -// mBinding.tvSeamName.text = it.seamName -// mBinding.tvAreaName.tag = it.areaId -// mBinding.tvAreaName.text = it.areaName -// mBinding.etSurfaceAzimuth.setText(it.surfaceAzimuth) -// mBinding.etSurfaceHeight.setText(it.surfaceHeight) -// mBinding.etSurfaceWidth.setText(it.surfaceWidth) -// mBinding.tvTunnelNature.text = it.tunnelNature -// -// mBinding.etPlanStartDate.text = it.planStartDate -// mBinding.etPlannEndDate.text = it.planEndDate -// -// mBinding.etGeologicalType.setText(it.geologicalType) -// mBinding.etHydrogeologicalType.setText(it.hydrogeologicalType) -// mBinding.etSeamIgnition.setText(it.seamIgnition) -// mBinding.etSeamGas.setText(it.seamGas) -// mBinding.etSeamBumpPressure.setText(it.seamBumpPressure) -// mBinding.etSurfaceSupportForm.setText(it.surfaceSupportForm) } private fun addNewFace() { -// val workingFaceName = mBinding.etWorkfaceName.text.toString().trim() -// if (TextUtils.isEmpty(workingFaceName)) { -// showToast("请输入工作面名称") -// return -// } -// val totalFootageStr = mBinding.etTotalFootage.text.toString().trim() -// if (TextUtils.isEmpty(totalFootageStr)) { -// showToast("请输入总进尺") -// return -// } -// try { -// totalFootageStr.toDouble() -// } catch (e: Exception) { -// e.printStackTrace() -// showToast("总进尺数据非数字格式,请确认") -// return -// } -//// mViewModel.postTunnellingSurfaceAdd( -//// TunnelingFaceAddBean( -//// surfaceName = mBinding.etWorkfaceName.text.toString(), -//// totalFootage = mBinding.etTotalFootage.text.toString() -//// ) -//// ) -// val workingFaceEntity = TunnelWorkingFaceEntity().also { -// it.surfaceId = System.currentTimeMillis() -// it.surfaceName = workingFaceName -// it.totalFootage = totalFootageStr -// -// it.seamName = mBinding.tvSeamName.text.toString().trim() -// if (it.seamName!!.isNotBlank()) { -// it.seamId = mBinding.tvSeamName.tag.toString().toLong() -// } -// it.areaName = mBinding.tvAreaName.text.toString().trim() -// if (it.areaName!!.isNotBlank()) { -// it.areaId = mBinding.tvAreaName.tag.toString().toLong() -// } -// -// it.surfaceAzimuth = mBinding.etSurfaceAzimuth.text.toString().trim() -// it.surfaceHeight = mBinding.etSurfaceHeight.text.toString().trim() -// it.surfaceWidth = mBinding.etSurfaceWidth.text.toString().trim() -// it.tunnelNature = mBinding.tvTunnelNature.text.toString().trim() -// it.planStartDate = mBinding.etPlanStartDate.text.toString().trim() -// it.planEndDate = mBinding.etPlannEndDate.text.toString().trim() -// it.geologicalType = mBinding.etGeologicalType.text.toString().trim() -// it.hydrogeologicalType = mBinding.etHydrogeologicalType.text.toString().trim() -// it.seamIgnition = mBinding.etSeamIgnition.text.toString().trim() -// it.seamGas = mBinding.etSeamGas.text.toString().trim() -// it.seamBumpPressure = mBinding.etSeamBumpPressure.text.toString().trim() -// it.surfaceSupportForm = mBinding.etSurfaceSupportForm.text.toString().trim() -// -// it.createTime = DateTimeUtil.formatDateTime(LocalDateTime.now()) -// it.dataState = "1" -// } // workingFaceViewModel.insert(workingFaceEntity) { // showToast("工作面新增完成") // EventBus.getDefault().post(workingFaceEntity) @@ -269,53 +168,6 @@ class AddMiningFaceActivity : } private fun editFace() { -// val workingFaceName = mBinding.etWorkfaceName.text.toString().trim() -// if (TextUtils.isEmpty(workingFaceName)) { -// showToast("请输入工作面名称") -// return -// } -// val totalFootageStr = mBinding.etTotalFootage.text.toString().trim() -// if (TextUtils.isEmpty(totalFootageStr)) { -// showToast("请输入总进尺") -// return -// } -// try { -// totalFootageStr.toDouble() -// } catch (e: Exception) { -// e.printStackTrace() -// showToast("总进尺数据非数字格式,请确认") -// return -// } -// val workingFaceEntity = TunnelWorkingFaceEntity().also { -// it.surfaceId = faceDetail!!.surfaceId -// it.surfaceName = workingFaceName -// it.totalFootage = totalFootageStr -// -// it.seamName = mBinding.tvSeamName.text.toString().trim() -// if (it.seamName!!.isNotBlank()) { -// it.seamId = string2num(mBinding.tvSeamName.tag.toString()) -// } -// it.areaName = mBinding.tvAreaName.text.toString().trim() -// if (it.areaName!!.isNotBlank()) { -// it.areaId = string2num(mBinding.tvAreaName.tag.toString()) -// } -// -// it.surfaceAzimuth = mBinding.etSurfaceAzimuth.text.toString().trim() -// it.surfaceHeight = mBinding.etSurfaceHeight.text.toString().trim() -// it.surfaceWidth = mBinding.etSurfaceWidth.text.toString().trim() -// it.tunnelNature = mBinding.tvTunnelNature.text.toString().trim() -// it.planStartDate = mBinding.etPlanStartDate.text.toString().trim() -// it.planEndDate = mBinding.etPlannEndDate.text.toString().trim() -// it.geologicalType = mBinding.etGeologicalType.text.toString().trim() -// it.hydrogeologicalType = mBinding.etHydrogeologicalType.text.toString().trim() -// it.seamIgnition = mBinding.etSeamIgnition.text.toString().trim() -// it.seamGas = mBinding.etSeamGas.text.toString().trim() -// it.seamBumpPressure = mBinding.etSeamBumpPressure.text.toString().trim() -// it.surfaceSupportForm = mBinding.etSurfaceSupportForm.text.toString().trim() -// -// it.createTime = DateTimeUtil.formatDateTime(LocalDateTime.now()) -// it.dataState = "1" -// } // workingFaceViewModel.update(workingFaceEntity) { // showToast("工作面修改完成") // EventBus.getDefault().post(workingFaceEntity) @@ -332,4 +184,67 @@ class AddMiningFaceActivity : return if (text.isNullOrBlank()) 0 else text.toLong() } + private fun initMiningList(isFirst: Boolean) { + miningList.run { + if (isFirst) { + add(AddMiningFaceItem(funcName = "工作面名称", isShowArrowDown = true)) + return + } + add(AddMiningFaceItem(funcName = "工作面名称", isShowArrowDown = false)) + add(AddMiningFaceItem(funcName = "水平", funcType = 1, onClick = { selectHorizontalPlane() })) + add(AddMiningFaceItem(funcName = "煤层", funcType = 1, onClick = { selectSeam() })) + add(AddMiningFaceItem(funcName = "采区", funcType = 1, onClick = { selectArea() })) + add(AddMiningFaceItem(funcName = "储量")) + add(AddMiningFaceItem(funcName = "胶运巷安全出口宽度")) + add(AddMiningFaceItem(funcName = "回风巷安全出口宽度")) + add(AddMiningFaceItem(funcName = "走向长度")) + add(AddMiningFaceItem(funcName = "倾向长度")) + add(AddMiningFaceItem(funcName = "胶带巷长度")) + add(AddMiningFaceItem(funcName = "回风巷长度")) + add(AddMiningFaceItem(funcName = "切眼长度")) + add(AddMiningFaceItem(funcName = "平均煤厚")) + add(AddMiningFaceItem(funcName = "容积")) + } + } + + private fun selectArea() { + if (seamAreaList.isEmpty()) { + showToast("请先选择所属煤层") + return + } + PickerUtil.showOptionPicker(this, "请选择所属采区域", seamAreaList) { option -> + miningList[3].let { + it.funcValue = option.name + it.funcId = option.id + } + addFaceAdapter.notifyItemChanged(3) + } + } + private fun selectSeam() { + PickerUtil.showOptionPicker(this, "请选择所属煤层", DictUtils.seamList) { option -> + miningList[2].let { + it.funcValue = option.name + it.funcId = option.id + } + addFaceAdapter.notifyItemChanged(2) + seamAreaList = DictUtils.areaMap[option.id] ?: mutableListOf() + } + } + + private fun selectHorizontalPlane() { + val list = mutableListOf() + list.add(WorkOption("1","A")) + list.add(WorkOption("2","B")) + list.add(WorkOption("3","C")) + list.add(WorkOption("4","D")) + list.add(WorkOption("5","E")) + PickerUtil.showOptionPicker(this, "请选择水平", list) { option -> + miningList[1].let { + it.funcValue = option.name + it.funcId = option.id + } + addFaceAdapter.notifyItemChanged(1) + } + } + } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningActivity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningActivity.kt index 4014e0e..de7dc56 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningActivity.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningActivity.kt @@ -16,6 +16,8 @@ import com.zmkg.coaloperation.db.entity.mining.MiningWorkingFaceEntity import com.zmkg.coaloperation.db.entity.mining.MiningWorkingFaceRecordEntity import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceEntity import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceRecordEntity +import com.zmkg.coaloperation.ui.mining.activity.AddMiningFaceActivity.Companion.WORK_FACE_TYPE +import com.zmkg.coaloperation.ui.mining.activity.AddMiningFaceActivity.WorkFaceType import com.zmkg.coaloperation.ui.tunneling.activity.AddWorkingFaceRecordActivity import com.zmkg.coaloperation.ui.tunneling.activity.WorkingFaceStatisticsActivity import org.greenrobot.eventbus.Subscribe @@ -114,6 +116,11 @@ class MiningActivity : } override fun bindEvent() { + mBinding.toolbarLay.titleTvRight.setOnClickListener { + toActivity(AddMiningFaceActivity::class.java, Bundle().apply { + putString(WORK_FACE_TYPE, WorkFaceType.ADD.name) + }) + } } override fun processClick(v: View?) { diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningFaceDetailActivity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningFaceDetailActivity.kt index 9b2767b..75a94a4 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningFaceDetailActivity.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningFaceDetailActivity.kt @@ -51,9 +51,8 @@ class MiningFaceDetailActivity : override fun bindEvent() { mBinding.toolbarLay.titleTvRight.setOnClickListener { toActivity(AddMiningFaceActivity::class.java, Bundle().apply { - putString(AddMiningFaceActivity.Companion.WORK_FACE_TYPE, AddMiningFaceActivity.WorkFaceType.EDIT.name) -// putSerializable(WorkFaceActivity.FACE_WORK_DETAIL_DATA, detail) - putParcelable(AddMiningFaceActivity.Companion.FACE_WORK_DETAIL_DATA, detail) + putString(AddMiningFaceActivity.WORK_FACE_TYPE, AddMiningFaceActivity.WorkFaceType.EDIT.name) + putParcelable(AddMiningFaceActivity.FACE_WORK_DETAIL_DATA, detail) }) } } diff --git a/coalMiningApp/app/src/main/res/layout/activity_add_mining_face.xml b/coalMiningApp/app/src/main/res/layout/activity_add_mining_face.xml index db9c19e..5369250 100644 --- a/coalMiningApp/app/src/main/res/layout/activity_add_mining_face.xml +++ b/coalMiningApp/app/src/main/res/layout/activity_add_mining_face.xml @@ -30,19 +30,10 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="20dp" + tools:itemCount="6" + android:overScrollMode="never" + tools:listitem="@layout/list_item_add_mining_face" android:background="@drawable/bg_stroke_gray"/> - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + \ No newline at end of file