diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 5bc90d4..3807eb2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -50,9 +50,12 @@
-
-
+ android:screenOrientation="landscape"
+ android:windowSoftInputMode="adjustPan" />
+
+
diff --git a/app/src/main/java/com/sw/inbound/activity/FoodCollectionActivity.kt b/app/src/main/java/com/sw/inbound/activity/FoodCollectionActivity.kt
index 14a7f73..0ab6ed6 100644
--- a/app/src/main/java/com/sw/inbound/activity/FoodCollectionActivity.kt
+++ b/app/src/main/java/com/sw/inbound/activity/FoodCollectionActivity.kt
@@ -17,6 +17,7 @@ import com.sw.inbound.adapter.GoodsSearchAdapter
import com.sw.inbound.databinding.ActivityFoodCollectionBinding
import com.sw.inbound.databinding.LayoutCameraPreviewBinding
import com.sw.inbound.databinding.LayoutEmptySearchBinding
+import com.sw.inbound.dialog.CollectSearchDialog
import com.sw.inbound.dialog.Loading
import com.sw.inbound.model.response.SearchGoodsInfo
import com.sw.inbound.objbox.Food
@@ -152,6 +153,9 @@ class FoodCollectionActivity : ComponentActivity() {
binding.btnTakePhoto.clickWithDebounce {
takePhoto()
}
+ binding.btnCollectedGoods.setOnClickListener {
+ CollectSearchDialog(this@FoodCollectionActivity).show()
+ }
// binding.btnAddDefault.clickWithDebounce {
// Thread{
// FoodModule.initDefFoodData(this) {
@@ -212,6 +216,8 @@ class FoodCollectionActivity : ComponentActivity() {
// }
// }
// binding.radioGroup.check(R.id.rbCollected)
+
+ loadEmptyView()
}
@SuppressLint("NotifyDataSetChanged")
diff --git a/app/src/main/java/com/sw/inbound/activity/GoodsListActivity.kt b/app/src/main/java/com/sw/inbound/activity/GoodsListActivity.kt
index b61b006..00da7dc 100644
--- a/app/src/main/java/com/sw/inbound/activity/GoodsListActivity.kt
+++ b/app/src/main/java/com/sw/inbound/activity/GoodsListActivity.kt
@@ -22,7 +22,7 @@ import com.sw.inbound.dialog.DialogManager
import com.sw.inbound.dialog.DropdownPopup
import com.sw.inbound.dialog.GoodsRecognizeDialog
import com.sw.inbound.dialog.GoodsSearchDialog
-import com.sw.inbound.dialog.NotReceiptWarnDialog
+import com.sw.inbound.dialog.WarnDialog
import com.sw.inbound.model.request.GoodsAddParam
import com.sw.inbound.model.request.PurchaseWarehouseParam
import com.sw.inbound.model.request.UploadInfo
@@ -169,13 +169,14 @@ abstract class GoodsListActivity : ComponentActivity() {
DialogManager.contains("GoodsRecognizeDialog") &&
goodsRecognizeDialog?.isShowing == true) {
goodsRecognizeDialog?.dismiss()
- isShowRecognizeDialog = true
- goodsRecognizeDialog = null
}
}
return
}
this.lastWeight = weight
+ if (DialogManager.hasShowDialog()) {
+ return
+ }
val checkResult = isFirstRecognize.not() && System.currentTimeMillis() - startTime <= DELAY_TIME
Timber.tag(TAG).d("recognizeWeight,checkResult=$checkResult")
if (checkResult) {
@@ -202,8 +203,13 @@ abstract class GoodsListActivity : ComponentActivity() {
Timber.tag(TAG).d("recognizeFood,takePhoto")
isShowRecognizeDialog = false
//bindCamera()
- cameraUtils.takePhoto(takePhotoSuccessCallback)
- isFirstRecognize = false
+ try {
+ cameraUtils.takePhoto(takePhotoSuccessCallback)
+ isFirstRecognize = false
+ } catch (e: Exception) {
+ Timber.tag(TAG).d("recognizeFood,takePhoto异常:${e.message}")
+ e.printStackTrace()
+ }
}
private var dropdownPopup: DropdownPopup? = null
@@ -265,7 +271,7 @@ abstract class GoodsListActivity : ComponentActivity() {
) {
runOnUiThread {
if (goodsRecognizeDialog?.isShowing == true) {
- isShowRecognizeDialog = false
+ //isShowRecognizeDialog = false
return@runOnUiThread
}
goodsRecognizeDialog = GoodsRecognizeDialog(
@@ -276,12 +282,8 @@ abstract class GoodsListActivity : ComponentActivity() {
) {
GoodsSearchDialog(this).show()
}.apply {
- setOnDismissListener {
- goodsRecognizeDialog = null
- isShowRecognizeDialog = true
- }
if (isFinishing.not() && isDestroyed.not()) {
- isShowRecognizeDialog = false
+ //isShowRecognizeDialog = false
show()
}
}
@@ -415,7 +417,7 @@ abstract class GoodsListActivity : ComponentActivity() {
val count = goodsList.count { it.isLocalGoods }
// 处理返回事件
if (count > 0) {
- NotReceiptWarnDialog(context = this@GoodsListActivity) {
+ WarnDialog(context = this@GoodsListActivity, content = "存在未收货的物品,请确认是否放弃收货,若放弃则数据不会保存?") {
//onBackPressedDispatcher.onBackPressed()
finish()
}.show()
diff --git a/app/src/main/java/com/sw/inbound/activity/SelfProcurementActivity.kt b/app/src/main/java/com/sw/inbound/activity/SelfProcurementActivity.kt
index f9263cb..4fa2e29 100644
--- a/app/src/main/java/com/sw/inbound/activity/SelfProcurementActivity.kt
+++ b/app/src/main/java/com/sw/inbound/activity/SelfProcurementActivity.kt
@@ -4,6 +4,7 @@ import android.util.Log
import androidx.recyclerview.widget.LinearLayoutManager
import com.sw.inbound.R
import com.sw.inbound.adapter.SelfProcurementAdapter
+import com.sw.inbound.dialog.WarnDialog
import com.sw.inbound.model.request.PurchaseWarehouseParam
import com.sw.inbound.model.response.DictType
import com.sw.inbound.utils.ext.toJsonString
@@ -22,11 +23,18 @@ class SelfProcurementActivity : GoodsListActivity() {
notifyItemChanged(position)
}
addOnItemChildClickListener(R.id.ivState) { adapter, view, position ->
- removeAt(position)
+ ///删除行数据弹窗
+ showWarnDialog(content = "请确认是否删除该条入库数据,删除后将无法恢复?") {
+ removeAt(position)
+ }
}
}
}
+ private fun showWarnDialog(content:String, callback:()-> Unit) {
+ WarnDialog(context = this, content = content, confirmBlock = callback).show()
+ }
+
override fun initRecyclerView() {
binding.rvGoodsList.let {
it.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
diff --git a/app/src/main/java/com/sw/inbound/adapter/CollectSearchAdapter.kt b/app/src/main/java/com/sw/inbound/adapter/CollectSearchAdapter.kt
index 2da7576..c3e87da 100644
--- a/app/src/main/java/com/sw/inbound/adapter/CollectSearchAdapter.kt
+++ b/app/src/main/java/com/sw/inbound/adapter/CollectSearchAdapter.kt
@@ -26,30 +26,30 @@ class CollectSearchAdapter(var list: MutableList) :
holder.binding.let {
it.tvGoodsName.run {
text = item!!.goodsName
-// setTextColor(if (item!!.isSelected) "#FF0032C8".toColorInt() else "#FF666666".toColorInt())
- setTextColor("#FF666666".toColorInt())
+ setTextColor(if (item!!.isSelected) "#FF0032C8".toColorInt() else "#FF666666".toColorInt())
+ //setTextColor("#FF666666".toColorInt())
+ }
+ it.root.run {
+ if (item!!.isSelected) {
+ setShapeDrawable(
+ solidColor = "#FFEAF0FF",
+ strokeColor = "#FF0033CC",
+ strokeWidth = 2.dp,
+ radius = 10.dp
+ )
+ } else {
+ setShapeDrawable(
+ solidColor = "#FFF5F5F5",
+ radius = 10.dp
+ )
+ }
}
// it.root.run {
-// if (item!!.isSelected) {
-// setShapeDrawable(
-// solidColor = "#FFEAF0FF",
-// strokeColor = "#FF0033CC",
-// strokeWidth = 2.dp,
-// radius = 10.dp
-// )
-// } else {
-// setShapeDrawable(
-// solidColor = "#FFF5F5F5",
-// radius = 10.dp
-// )
-// }
+// setShapeDrawable(
+// solidColor = "#FFF5F5F5",
+// radius = 10.dp
+// )
// }
- it.root.run {
- setShapeDrawable(
- solidColor = "#FFF5F5F5",
- radius = 10.dp
- )
- }
}
}
diff --git a/app/src/main/java/com/sw/inbound/dialog/BaseDialog.kt b/app/src/main/java/com/sw/inbound/dialog/BaseDialog.kt
index 5f289b8..753a633 100644
--- a/app/src/main/java/com/sw/inbound/dialog/BaseDialog.kt
+++ b/app/src/main/java/com/sw/inbound/dialog/BaseDialog.kt
@@ -8,6 +8,7 @@ import android.os.Bundle
import android.view.Gravity
import android.view.View
import com.sw.inbound.R
+import com.sw.inbound.activity.FoodCollectionActivity
import com.sw.inbound.activity.GoodsListActivity
import com.sw.inbound.utils.ext.dp
import com.sw.inbound.utils.ext.hideKeyboard
@@ -15,7 +16,7 @@ import com.sw.inbound.utils.ext.hideKeyboard
abstract class BaseDialog(
context: Context,
var defWidth: Int = 1500.dp,
- var defHeight: Int = 900.dp
+ var defHeight: Int = 800.dp
) : Dialog(context, R.style.DialogTheme) {
override fun onCreate(savedInstanceState: Bundle?) {
@@ -48,6 +49,17 @@ abstract class BaseDialog(
return null
}
+ fun getFoodCollectionActivity(): FoodCollectionActivity? {
+ var ctx = context
+ while (ctx is ContextWrapper) {
+ ctx = ctx.baseContext
+ if (ctx is FoodCollectionActivity) {
+ return ctx
+ }
+ }
+ return null
+ }
+
override fun show() {
super.show()
DialogManager.addDialog(this)
diff --git a/app/src/main/java/com/sw/inbound/dialog/CollectSearchDialog.kt b/app/src/main/java/com/sw/inbound/dialog/CollectSearchDialog.kt
index 8970030..5c70f85 100644
--- a/app/src/main/java/com/sw/inbound/dialog/CollectSearchDialog.kt
+++ b/app/src/main/java/com/sw/inbound/dialog/CollectSearchDialog.kt
@@ -4,10 +4,11 @@ import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
+import androidx.core.widget.addTextChangedListener
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import com.sw.inbound.R
-import com.sw.inbound.activity.GoodsListActivity
+import com.sw.inbound.activity.FoodCollectionActivity
import com.sw.inbound.adapter.CollectSearchAdapter
import com.sw.inbound.databinding.DialogCollectSearchBinding
import com.sw.inbound.databinding.LayoutEmptySearchBinding
@@ -34,14 +35,31 @@ class CollectSearchDialog(
return binding.root
}
- private var activity: GoodsListActivity? = null
+ private var activity: FoodCollectionActivity? = null
override fun initView() {
- activity = getReceiptActivity()
+ activity = getFoodCollectionActivity()
binding.ivClose.setOnClickListener { dismiss() }
- binding.ivGoodsSearch.setOnClickListener { searchGoods() }
+ binding.ivGoodsSearch.setOnClickListener {
+ val searchName = binding.etInputGoods.text.toString().trim()
+ if (searchName.isBlank()) {
+ activity?.toast("请输入物品名称")
+ return@setOnClickListener
+ }
+ getCollectGoods(searchName)
+ }
binding.etInputGoods.let { v ->
v.addOnActionSearchListener {
- searchGoods()
+ val searchName = binding.etInputGoods.text.toString().trim()
+ if (searchName.isBlank()) {
+ activity?.toast("请输入物品名称")
+ return@addOnActionSearchListener
+ }
+ getCollectGoods(searchName)
+ }
+ v.addTextChangedListener {
+ if (it.isNullOrBlank()) {
+ getCollectGoods()
+ }
}
}
binding.btnConfirm.setOnClickListener {
@@ -56,55 +74,28 @@ class CollectSearchDialog(
it.setEnableLoadMore(false)
it.setOnRefreshListener {
pageNo = 1
- searchGoods()
- }
- it.setOnLoadMoreListener {
- searchGoods()
+ val searchName = binding.etInputGoods.text.toString().trim()
+ getCollectGoods(searchName)
}
+ //it.setOnLoadMoreListener {
+ // searchGoods()
+ //}
}
getCollectGoods()
+ //binding.root.clickWithDebounce {
+ // Thread {
+ // FoodModule.initDefFoodData(activity!!) {
+ // activity?.runOnUiThread {
+ // activity?.toast("添加完成")
+ // getCollectGoods()
+ // }
+ // }
+ // }.start()
+ //}
}
private var pageNo = 1
- companion object {
- private const val PAGE_SIZE = 10
- }
-
- @SuppressLint("NotifyDataSetChanged")
- private fun searchGoods() {
- val searchName = binding.etInputGoods.text.toString().trim()
- if (searchName.isBlank()) {
- activity?.toast("请输入物品名称")
- finishRefresh()
- return
- }
- activity?.searchGoods(
- searchName = searchName,
- pageNo = pageNo,
- pageSize = PAGE_SIZE
- ) { records ->
- finishRefresh()
- binding.etInputGoods.hideKeyboard()
- if (pageNo == 1) {
- list.clear()
- }
- list.addAll(records)
- if (list.isEmpty()) {
- loadEmptyView()
- return@searchGoods
- }
- val enableLoadMore = records.size >= PAGE_SIZE
- binding.refreshLayout.setEnableLoadMore(enableLoadMore)
- if (enableLoadMore) {
- pageNo++
- }
- binding.rvSearch.layoutManager =
- GridLayoutManager(context, 2, GridLayoutManager.VERTICAL, false)
- searchAdapter.notifyDataSetChanged()
- }
- }
-
private fun loadEmptyView() {
binding.rvSearch.layoutManager =
LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)
@@ -140,9 +131,9 @@ class CollectSearchDialog(
}
}
- private fun deleteGoods(position:Int) {
- WarnDialog(context = context, content = "请确认是否删除该物品?", confirmBlock = {
- Thread{
+ private fun deleteGoods(position: Int) {
+ WarnDialog(context = context, content = "请确认是否删除物品:${list[position].goodsName}?", confirmBlock = {
+ Thread {
activity?.runOnUiThread {
Loading.show(context)
}
@@ -151,9 +142,13 @@ class CollectSearchDialog(
box?.removeByIds(filterIdList)
activity?.runOnUiThread {
Loading.dismiss()
- list.removeAt(position)
- searchAdapter.notifyDataSetChanged()
+ //list.remove(list[position])
+ //searchAdapter.notifyDataSetChanged()
+ searchAdapter.removeAt(position)
activity?.toast("删除成功")
+ if (list.isEmpty()) {
+ loadEmptyView()
+ }
}
}.start()
}).show()
@@ -170,19 +165,28 @@ class CollectSearchDialog(
}
private var box: Box? = null
+
@SuppressLint("NotifyDataSetChanged")
- private fun getCollectGoods() {
+ private fun getCollectGoods(searchName:String?=null) {
if (box == null) {
box = ObjectBox.boxStore.boxFor(Food::class)
}
- box?.all?.distinctBy { it.name }?.forEach {
+ list.clear()
+ var queryList = box?.all?.distinctBy { it.name }
+ if (searchName.isNullOrBlank().not()) {
+ queryList = queryList?.filter { it.name?.contains(searchName) == true }
+ }
+ queryList?.forEach {
list.add((SearchGoodsInfo.Record(goodsName = it.name)))
}
- binding.rvSearch.layoutManager = GridLayoutManager(activity, 2, LinearLayoutManager.VERTICAL, false)
+ binding.rvSearch.layoutManager =
+ GridLayoutManager(activity, 2, LinearLayoutManager.VERTICAL, false)
searchAdapter.notifyDataSetChanged()
if (list.isEmpty()) {
loadEmptyView()
}
+ finishRefresh()
+ binding.root.hideKeyboard()
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/sw/inbound/dialog/DialogManager.kt b/app/src/main/java/com/sw/inbound/dialog/DialogManager.kt
index f1ae3b7..567b529 100644
--- a/app/src/main/java/com/sw/inbound/dialog/DialogManager.kt
+++ b/app/src/main/java/com/sw/inbound/dialog/DialogManager.kt
@@ -2,7 +2,7 @@ package com.sw.inbound.dialog
object DialogManager {
- private var dialogList:MutableList = mutableListOf()
+ private var dialogList: MutableList = mutableListOf()
fun addDialog(dialog: BaseDialog) {
if (dialogList.contains(dialog).not()) {
@@ -17,7 +17,7 @@ object DialogManager {
dialogList.remove(dialog)
}
- fun getDialogList():MutableList {
+ fun getDialogList(): MutableList {
return dialogList
}
@@ -35,9 +35,14 @@ object DialogManager {
}
}
- fun contains(vararg className: String):Boolean {
+ fun contains(vararg className: String): Boolean {
val item = dialogList.firstOrNull { className.contains(it.javaClass.simpleName) }
return item != null
}
+ fun hasShowDialog(): Boolean {
+ val item = dialogList.firstOrNull { it.isShowing }
+ return item != null
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/sw/inbound/dialog/GoodsRecognizeDialog.kt b/app/src/main/java/com/sw/inbound/dialog/GoodsRecognizeDialog.kt
index 1768b18..c861e28 100644
--- a/app/src/main/java/com/sw/inbound/dialog/GoodsRecognizeDialog.kt
+++ b/app/src/main/java/com/sw/inbound/dialog/GoodsRecognizeDialog.kt
@@ -98,4 +98,12 @@ class GoodsRecognizeDialog(
recognizeAdapter.stateView = it
}
}
+
+ override fun dismiss() {
+ super.dismiss()
+ activity?.run {
+ isShowRecognizeDialog = true
+ goodsRecognizeDialog = null
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/sw/inbound/dialog/NotReceiptWarnDialog.kt b/app/src/main/java/com/sw/inbound/dialog/NotReceiptWarnDialog.kt
index f72480f..1508a6c 100644
--- a/app/src/main/java/com/sw/inbound/dialog/NotReceiptWarnDialog.kt
+++ b/app/src/main/java/com/sw/inbound/dialog/NotReceiptWarnDialog.kt
@@ -1,34 +1,34 @@
-package com.sw.inbound.dialog
-
-import android.content.Context
-import android.view.LayoutInflater
-import android.view.View
-import com.sw.inbound.databinding.DialogNotReceiptWarnBinding
-import com.sw.inbound.utils.ext.dp
-
-class NotReceiptWarnDialog(
- context: Context,
- var cancelBlock: () -> Unit = {},
- var confirmBlock: () -> Unit = {},
-) : BaseDialog(context = context, defWidth = 960.dp, defHeight = 540.dp) {
-
- private lateinit var binding: DialogNotReceiptWarnBinding
- override fun getRootView(): View {
- val inflater = LayoutInflater.from(context)
- binding = DialogNotReceiptWarnBinding.inflate(inflater)
- return binding.root
- }
-
- override fun initView() {
- binding.btnCancel.setOnClickListener {
- cancelBlock()
- dismiss()
- }
- binding.btnConfirm.setOnClickListener {
- confirmBlock()
- dismiss()
- }
- }
-
-
-}
\ No newline at end of file
+//package com.sw.inbound.dialog
+//
+//import android.content.Context
+//import android.view.LayoutInflater
+//import android.view.View
+//import com.sw.inbound.databinding.DialogNotReceiptWarnBinding
+//import com.sw.inbound.utils.ext.dp
+//
+//class NotReceiptWarnDialog(
+// context: Context,
+// var cancelBlock: () -> Unit = {},
+// var confirmBlock: () -> Unit = {},
+//) : BaseDialog(context = context, defWidth = 960.dp, defHeight = 540.dp) {
+//
+// private lateinit var binding: DialogNotReceiptWarnBinding
+// override fun getRootView(): View {
+// val inflater = LayoutInflater.from(context)
+// binding = DialogNotReceiptWarnBinding.inflate(inflater)
+// return binding.root
+// }
+//
+// override fun initView() {
+// binding.btnCancel.setOnClickListener {
+// cancelBlock()
+// dismiss()
+// }
+// binding.btnConfirm.setOnClickListener {
+// confirmBlock()
+// dismiss()
+// }
+// }
+//
+//
+//}
\ No newline at end of file
diff --git a/app/src/main/java/com/sw/inbound/dialog/WarnDialog.kt b/app/src/main/java/com/sw/inbound/dialog/WarnDialog.kt
index 1163fc8..b4c0dd2 100644
--- a/app/src/main/java/com/sw/inbound/dialog/WarnDialog.kt
+++ b/app/src/main/java/com/sw/inbound/dialog/WarnDialog.kt
@@ -12,7 +12,7 @@ class WarnDialog(
var content:String,
var cancelBlock: () -> Unit = {},
var confirmBlock: () -> Unit = {},
-) : BaseDialog(context = context, defWidth = 960.dp, defHeight = 540.dp) {
+) : BaseDialog(context = context, defWidth = 660.dp, defHeight = 360.dp) {
private lateinit var binding: DialogWarnBinding
override fun getRootView(): View {
diff --git a/app/src/main/java/com/sw/inbound/utils/PhotoCaptureHelper.kt b/app/src/main/java/com/sw/inbound/utils/PhotoCaptureHelper.kt
index 2b0bd8b..6c2ed72 100644
--- a/app/src/main/java/com/sw/inbound/utils/PhotoCaptureHelper.kt
+++ b/app/src/main/java/com/sw/inbound/utils/PhotoCaptureHelper.kt
@@ -77,7 +77,7 @@ class PhotoCaptureHelper(
if (errorMsg.contains("Not bound to a valid Camera")) {
if (bindCamera != null) {
bindCamera?.invoke()
- takePhoto()
+ //takePhoto()
}
}
diff --git a/app/src/main/res/layout/activity_food_collection.xml b/app/src/main/res/layout/activity_food_collection.xml
index 6a6ed2f..688bc62 100644
--- a/app/src/main/res/layout/activity_food_collection.xml
+++ b/app/src/main/res/layout/activity_food_collection.xml
@@ -50,6 +50,16 @@
android:textSize="24sp"
android:textStyle="bold" />
+
+
diff --git a/app/src/main/res/layout/dialog_warn.xml b/app/src/main/res/layout/dialog_warn.xml
index 3fcb7da..ccbd829 100644
--- a/app/src/main/res/layout/dialog_warn.xml
+++ b/app/src/main/res/layout/dialog_warn.xml
@@ -1,16 +1,16 @@
@@ -18,42 +18,41 @@
android:id="@+id/tvWarnContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginHorizontal="80dp"
+ android:layout_marginHorizontal="40dp"
android:layout_marginVertical="50dp"
android:gravity="center"
tools:text="存在未收货的物品,请确认是否放弃收货,若放弃则数据不会保存?"
android:textColor="#ff141428"
- android:textSize="36sp"
+ android:textSize="32sp"
android:textStyle="bold" />
diff --git a/app/src/main/res/layout/list_item_self_procurement.xml b/app/src/main/res/layout/list_item_self_procurement.xml
index 2be22bc..9c4fe47 100644
--- a/app/src/main/res/layout/list_item_self_procurement.xml
+++ b/app/src/main/res/layout/list_item_self_procurement.xml
@@ -136,8 +136,9 @@