diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index eaea412..b520164 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -56,6 +56,7 @@
+
@@ -64,6 +65,8 @@
+
+
+
@@ -64,6 +65,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun getItemCount(): Int = dataRows.size
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_customer_rv_l, parent, false)
+ )
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.customerNameView.text = rowsBean.customerName
+ holder.agreementLevelView.text = rowsBean.grade.toChineseGrade()
+ holder.overallView.text = rowsBean.evaluationName
+ holder.scaleView.text = rowsBean.companySizeName
+
+ //绑定事件
+ holder.itemView.setOnClickListener {
+ listener?.onItemClicked(position)
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var customerNameView: TextView = view.findViewById(R.id.customerNameView)
+ var agreementLevelView: TextView = view.findViewById(R.id.agreementLevelView)
+ var overallView: TextView = view.findViewById(R.id.overallView)
+ var scaleView: TextView = view.findViewById(R.id.scaleView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index eaea412..b520164 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -56,6 +56,7 @@
+
@@ -64,6 +65,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun getItemCount(): Int = dataRows.size
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_customer_rv_l, parent, false)
+ )
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.customerNameView.text = rowsBean.customerName
+ holder.agreementLevelView.text = rowsBean.grade.toChineseGrade()
+ holder.overallView.text = rowsBean.evaluationName
+ holder.scaleView.text = rowsBean.companySizeName
+
+ //绑定事件
+ holder.itemView.setOnClickListener {
+ listener?.onItemClicked(position)
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var customerNameView: TextView = view.findViewById(R.id.customerNameView)
+ var agreementLevelView: TextView = view.findViewById(R.id.agreementLevelView)
+ var overallView: TextView = view.findViewById(R.id.overallView)
+ var scaleView: TextView = view.findViewById(R.id.scaleView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
index 492a239..b214b05 100644
--- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
+++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
@@ -141,6 +141,19 @@
return (t2 - t1) > 0
}
+fun String.toChineseGrade(): String {
+ if (this.isBlank()) {
+ return "级别未知"
+ }
+ return when (this) {
+ "0" -> "A"
+ "1" -> "B"
+ "2" -> "C"
+ "3" -> "D"
+ else -> "级别未知"
+ }
+}
+
fun String.compressImage(context: Context, listener: OnImageCompressListener) {
Luban.with(context)
.load(this)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index eaea412..b520164 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -56,6 +56,7 @@
+
@@ -64,6 +65,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun getItemCount(): Int = dataRows.size
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_customer_rv_l, parent, false)
+ )
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.customerNameView.text = rowsBean.customerName
+ holder.agreementLevelView.text = rowsBean.grade.toChineseGrade()
+ holder.overallView.text = rowsBean.evaluationName
+ holder.scaleView.text = rowsBean.companySizeName
+
+ //绑定事件
+ holder.itemView.setOnClickListener {
+ listener?.onItemClicked(position)
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var customerNameView: TextView = view.findViewById(R.id.customerNameView)
+ var agreementLevelView: TextView = view.findViewById(R.id.agreementLevelView)
+ var overallView: TextView = view.findViewById(R.id.overallView)
+ var scaleView: TextView = view.findViewById(R.id.scaleView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
index 492a239..b214b05 100644
--- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
+++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
@@ -141,6 +141,19 @@
return (t2 - t1) > 0
}
+fun String.toChineseGrade(): String {
+ if (this.isBlank()) {
+ return "级别未知"
+ }
+ return when (this) {
+ "0" -> "A"
+ "1" -> "B"
+ "2" -> "C"
+ "3" -> "D"
+ else -> "级别未知"
+ }
+}
+
fun String.compressImage(context: Context, listener: OnImageCompressListener) {
Luban.with(context)
.load(this)
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
index dcbb471..6de2dc9 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
@@ -84,12 +84,12 @@
override fun initLayoutView(): Int = R.layout.activity_capability
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun onResume() {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index eaea412..b520164 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -56,6 +56,7 @@
+
@@ -64,6 +65,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun getItemCount(): Int = dataRows.size
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_customer_rv_l, parent, false)
+ )
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.customerNameView.text = rowsBean.customerName
+ holder.agreementLevelView.text = rowsBean.grade.toChineseGrade()
+ holder.overallView.text = rowsBean.evaluationName
+ holder.scaleView.text = rowsBean.companySizeName
+
+ //绑定事件
+ holder.itemView.setOnClickListener {
+ listener?.onItemClicked(position)
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var customerNameView: TextView = view.findViewById(R.id.customerNameView)
+ var agreementLevelView: TextView = view.findViewById(R.id.agreementLevelView)
+ var overallView: TextView = view.findViewById(R.id.overallView)
+ var scaleView: TextView = view.findViewById(R.id.scaleView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
index 492a239..b214b05 100644
--- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
+++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
@@ -141,6 +141,19 @@
return (t2 - t1) > 0
}
+fun String.toChineseGrade(): String {
+ if (this.isBlank()) {
+ return "级别未知"
+ }
+ return when (this) {
+ "0" -> "A"
+ "1" -> "B"
+ "2" -> "C"
+ "3" -> "D"
+ else -> "级别未知"
+ }
+}
+
fun String.compressImage(context: Context, listener: OnImageCompressListener) {
Luban.with(context)
.load(this)
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
index dcbb471..6de2dc9 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
@@ -84,12 +84,12 @@
override fun initLayoutView(): Int = R.layout.activity_capability
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun onResume() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
index defa8f9..0629f1c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
@@ -1,25 +1,149 @@
package com.casic.xz.meterage.view.home
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.xz.meterage.R
+import com.casic.xz.meterage.adapter.CustomerListAdapter
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.extensions.showEmptyPage
+import com.casic.xz.meterage.model.CustomerListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.view.search.SearchCustomerActivity
+import com.casic.xz.meterage.vm.CustomerViewModel
+import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_capability.rootView
+import kotlinx.android.synthetic.main.activity_customer.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
class CustomerActivity : KotlinBaseActivity() {
- override fun initData() {
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var customerViewModel: CustomerViewModel
+ private lateinit var customerListAdapter: CustomerListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+ override fun initData() {
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java]
+ customerViewModel.customerResult.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ customerLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ customerLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023021301)
+ }
+ }
}
override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.setOnClickListener {
+ navigatePageTo()
+ }
+ customerLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ customerLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getCustomerList()
+ }
}
override fun initLayoutView(): Int = R.layout.activity_customer
override fun observeRequestState() {
-
+ customerViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
}
override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "客户列表"
+ }
+ override fun onResume() {
+ super.onResume()
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ private fun getCustomerList() {
+ customerViewModel.getCustomerList(
+ "",
+ "",
+ "",
+ "",
+ pageIndex
+ )
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023021301 -> {
+ if (isRefresh || isLoadMore) {
+ customerListAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无客户数据") {
+ pageIndex = 1
+ getCustomerList()
+ }
+ } else {
+ emptyView!!.hide()
+ customerListAdapter = CustomerListAdapter(this, dataBeans)
+ customerRecyclerView.addItemDecoration(
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ )
+ customerRecyclerView.adapter = customerListAdapter
+ customerListAdapter.setOnItemClickListener(object :
+ CustomerListAdapter.OnItemClickListener {
+ override fun onItemClicked(position: Int) {
+ val rowsModel = dataBeans[position]
+ navigatePageTo(rowsModel.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
}
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index eaea412..b520164 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -56,6 +56,7 @@
+
@@ -64,6 +65,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun getItemCount(): Int = dataRows.size
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_customer_rv_l, parent, false)
+ )
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.customerNameView.text = rowsBean.customerName
+ holder.agreementLevelView.text = rowsBean.grade.toChineseGrade()
+ holder.overallView.text = rowsBean.evaluationName
+ holder.scaleView.text = rowsBean.companySizeName
+
+ //绑定事件
+ holder.itemView.setOnClickListener {
+ listener?.onItemClicked(position)
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var customerNameView: TextView = view.findViewById(R.id.customerNameView)
+ var agreementLevelView: TextView = view.findViewById(R.id.agreementLevelView)
+ var overallView: TextView = view.findViewById(R.id.overallView)
+ var scaleView: TextView = view.findViewById(R.id.scaleView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
index 492a239..b214b05 100644
--- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
+++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
@@ -141,6 +141,19 @@
return (t2 - t1) > 0
}
+fun String.toChineseGrade(): String {
+ if (this.isBlank()) {
+ return "级别未知"
+ }
+ return when (this) {
+ "0" -> "A"
+ "1" -> "B"
+ "2" -> "C"
+ "3" -> "D"
+ else -> "级别未知"
+ }
+}
+
fun String.compressImage(context: Context, listener: OnImageCompressListener) {
Luban.with(context)
.load(this)
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
index dcbb471..6de2dc9 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
@@ -84,12 +84,12 @@
override fun initLayoutView(): Int = R.layout.activity_capability
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun onResume() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
index defa8f9..0629f1c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
@@ -1,25 +1,149 @@
package com.casic.xz.meterage.view.home
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.xz.meterage.R
+import com.casic.xz.meterage.adapter.CustomerListAdapter
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.extensions.showEmptyPage
+import com.casic.xz.meterage.model.CustomerListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.view.search.SearchCustomerActivity
+import com.casic.xz.meterage.vm.CustomerViewModel
+import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_capability.rootView
+import kotlinx.android.synthetic.main.activity_customer.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
class CustomerActivity : KotlinBaseActivity() {
- override fun initData() {
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var customerViewModel: CustomerViewModel
+ private lateinit var customerListAdapter: CustomerListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+ override fun initData() {
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java]
+ customerViewModel.customerResult.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ customerLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ customerLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023021301)
+ }
+ }
}
override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.setOnClickListener {
+ navigatePageTo()
+ }
+ customerLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ customerLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getCustomerList()
+ }
}
override fun initLayoutView(): Int = R.layout.activity_customer
override fun observeRequestState() {
-
+ customerViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
}
override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "客户列表"
+ }
+ override fun onResume() {
+ super.onResume()
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ private fun getCustomerList() {
+ customerViewModel.getCustomerList(
+ "",
+ "",
+ "",
+ "",
+ pageIndex
+ )
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023021301 -> {
+ if (isRefresh || isLoadMore) {
+ customerListAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无客户数据") {
+ pageIndex = 1
+ getCustomerList()
+ }
+ } else {
+ emptyView!!.hide()
+ customerListAdapter = CustomerListAdapter(this, dataBeans)
+ customerRecyclerView.addItemDecoration(
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ )
+ customerRecyclerView.adapter = customerListAdapter
+ customerListAdapter.setOnItemClickListener(object :
+ CustomerListAdapter.OnItemClickListener {
+ override fun onItemClicked(position: Int) {
+ val rowsModel = dataBeans[position]
+ navigatePageTo(rowsModel.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
new file mode 100644
index 0000000..5f2cefe
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
@@ -0,0 +1,25 @@
+package com.casic.xz.meterage.view.home
+
+import com.casic.xz.meterage.R
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class CustomerDetailActivity : KotlinBaseActivity() {
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_customer_detail
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index eaea412..b520164 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -56,6 +56,7 @@
+
@@ -64,6 +65,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun getItemCount(): Int = dataRows.size
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_customer_rv_l, parent, false)
+ )
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.customerNameView.text = rowsBean.customerName
+ holder.agreementLevelView.text = rowsBean.grade.toChineseGrade()
+ holder.overallView.text = rowsBean.evaluationName
+ holder.scaleView.text = rowsBean.companySizeName
+
+ //绑定事件
+ holder.itemView.setOnClickListener {
+ listener?.onItemClicked(position)
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var customerNameView: TextView = view.findViewById(R.id.customerNameView)
+ var agreementLevelView: TextView = view.findViewById(R.id.agreementLevelView)
+ var overallView: TextView = view.findViewById(R.id.overallView)
+ var scaleView: TextView = view.findViewById(R.id.scaleView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
index 492a239..b214b05 100644
--- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
+++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
@@ -141,6 +141,19 @@
return (t2 - t1) > 0
}
+fun String.toChineseGrade(): String {
+ if (this.isBlank()) {
+ return "级别未知"
+ }
+ return when (this) {
+ "0" -> "A"
+ "1" -> "B"
+ "2" -> "C"
+ "3" -> "D"
+ else -> "级别未知"
+ }
+}
+
fun String.compressImage(context: Context, listener: OnImageCompressListener) {
Luban.with(context)
.load(this)
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
index dcbb471..6de2dc9 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
@@ -84,12 +84,12 @@
override fun initLayoutView(): Int = R.layout.activity_capability
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun onResume() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
index defa8f9..0629f1c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
@@ -1,25 +1,149 @@
package com.casic.xz.meterage.view.home
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.xz.meterage.R
+import com.casic.xz.meterage.adapter.CustomerListAdapter
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.extensions.showEmptyPage
+import com.casic.xz.meterage.model.CustomerListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.view.search.SearchCustomerActivity
+import com.casic.xz.meterage.vm.CustomerViewModel
+import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_capability.rootView
+import kotlinx.android.synthetic.main.activity_customer.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
class CustomerActivity : KotlinBaseActivity() {
- override fun initData() {
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var customerViewModel: CustomerViewModel
+ private lateinit var customerListAdapter: CustomerListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+ override fun initData() {
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java]
+ customerViewModel.customerResult.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ customerLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ customerLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023021301)
+ }
+ }
}
override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.setOnClickListener {
+ navigatePageTo()
+ }
+ customerLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ customerLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getCustomerList()
+ }
}
override fun initLayoutView(): Int = R.layout.activity_customer
override fun observeRequestState() {
-
+ customerViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
}
override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "客户列表"
+ }
+ override fun onResume() {
+ super.onResume()
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ private fun getCustomerList() {
+ customerViewModel.getCustomerList(
+ "",
+ "",
+ "",
+ "",
+ pageIndex
+ )
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023021301 -> {
+ if (isRefresh || isLoadMore) {
+ customerListAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无客户数据") {
+ pageIndex = 1
+ getCustomerList()
+ }
+ } else {
+ emptyView!!.hide()
+ customerListAdapter = CustomerListAdapter(this, dataBeans)
+ customerRecyclerView.addItemDecoration(
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ )
+ customerRecyclerView.adapter = customerListAdapter
+ customerListAdapter.setOnItemClickListener(object :
+ CustomerListAdapter.OnItemClickListener {
+ override fun onItemClicked(position: Int) {
+ val rowsModel = dataBeans[position]
+ navigatePageTo(rowsModel.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
new file mode 100644
index 0000000..5f2cefe
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
@@ -0,0 +1,25 @@
+package com.casic.xz.meterage.view.home
+
+import com.casic.xz.meterage.R
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class CustomerDetailActivity : KotlinBaseActivity() {
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_customer_detail
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
index aea442f..b0bfd9c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
@@ -103,12 +103,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_capability_reasult
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
private val callback = Handler.Callback {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index eaea412..b520164 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -56,6 +56,7 @@
+
@@ -64,6 +65,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun getItemCount(): Int = dataRows.size
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_customer_rv_l, parent, false)
+ )
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.customerNameView.text = rowsBean.customerName
+ holder.agreementLevelView.text = rowsBean.grade.toChineseGrade()
+ holder.overallView.text = rowsBean.evaluationName
+ holder.scaleView.text = rowsBean.companySizeName
+
+ //绑定事件
+ holder.itemView.setOnClickListener {
+ listener?.onItemClicked(position)
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var customerNameView: TextView = view.findViewById(R.id.customerNameView)
+ var agreementLevelView: TextView = view.findViewById(R.id.agreementLevelView)
+ var overallView: TextView = view.findViewById(R.id.overallView)
+ var scaleView: TextView = view.findViewById(R.id.scaleView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
index 492a239..b214b05 100644
--- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
+++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
@@ -141,6 +141,19 @@
return (t2 - t1) > 0
}
+fun String.toChineseGrade(): String {
+ if (this.isBlank()) {
+ return "级别未知"
+ }
+ return when (this) {
+ "0" -> "A"
+ "1" -> "B"
+ "2" -> "C"
+ "3" -> "D"
+ else -> "级别未知"
+ }
+}
+
fun String.compressImage(context: Context, listener: OnImageCompressListener) {
Luban.with(context)
.load(this)
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
index dcbb471..6de2dc9 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
@@ -84,12 +84,12 @@
override fun initLayoutView(): Int = R.layout.activity_capability
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun onResume() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
index defa8f9..0629f1c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
@@ -1,25 +1,149 @@
package com.casic.xz.meterage.view.home
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.xz.meterage.R
+import com.casic.xz.meterage.adapter.CustomerListAdapter
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.extensions.showEmptyPage
+import com.casic.xz.meterage.model.CustomerListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.view.search.SearchCustomerActivity
+import com.casic.xz.meterage.vm.CustomerViewModel
+import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_capability.rootView
+import kotlinx.android.synthetic.main.activity_customer.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
class CustomerActivity : KotlinBaseActivity() {
- override fun initData() {
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var customerViewModel: CustomerViewModel
+ private lateinit var customerListAdapter: CustomerListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+ override fun initData() {
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java]
+ customerViewModel.customerResult.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ customerLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ customerLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023021301)
+ }
+ }
}
override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.setOnClickListener {
+ navigatePageTo()
+ }
+ customerLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ customerLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getCustomerList()
+ }
}
override fun initLayoutView(): Int = R.layout.activity_customer
override fun observeRequestState() {
-
+ customerViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
}
override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "客户列表"
+ }
+ override fun onResume() {
+ super.onResume()
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ private fun getCustomerList() {
+ customerViewModel.getCustomerList(
+ "",
+ "",
+ "",
+ "",
+ pageIndex
+ )
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023021301 -> {
+ if (isRefresh || isLoadMore) {
+ customerListAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无客户数据") {
+ pageIndex = 1
+ getCustomerList()
+ }
+ } else {
+ emptyView!!.hide()
+ customerListAdapter = CustomerListAdapter(this, dataBeans)
+ customerRecyclerView.addItemDecoration(
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ )
+ customerRecyclerView.adapter = customerListAdapter
+ customerListAdapter.setOnItemClickListener(object :
+ CustomerListAdapter.OnItemClickListener {
+ override fun onItemClicked(position: Int) {
+ val rowsModel = dataBeans[position]
+ navigatePageTo(rowsModel.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
new file mode 100644
index 0000000..5f2cefe
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
@@ -0,0 +1,25 @@
+package com.casic.xz.meterage.view.home
+
+import com.casic.xz.meterage.R
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class CustomerDetailActivity : KotlinBaseActivity() {
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_customer_detail
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
index aea442f..b0bfd9c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
@@ -103,12 +103,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_capability_reasult
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
private val callback = Handler.Callback {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt
new file mode 100644
index 0000000..7e23b3a
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt
@@ -0,0 +1,43 @@
+package com.casic.xz.meterage.view.search
+
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import kotlinx.android.synthetic.main.activity_search_customer.*
+import kotlinx.android.synthetic.main.include_search_input_title.*
+
+/**
+ * 搜索客户
+ * */
+class SearchCustomerActivity : KotlinBaseActivity() {
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ searchTextView.setOnClickListener {
+ navigatePageTo(inputView.text.toString())
+ }
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_search_customer
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ inputView.hint = "查询客户名称、编号"
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //TODO 流式布局显示查询记录Tag?
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index eaea412..b520164 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -56,6 +56,7 @@
+
@@ -64,6 +65,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun getItemCount(): Int = dataRows.size
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_customer_rv_l, parent, false)
+ )
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.customerNameView.text = rowsBean.customerName
+ holder.agreementLevelView.text = rowsBean.grade.toChineseGrade()
+ holder.overallView.text = rowsBean.evaluationName
+ holder.scaleView.text = rowsBean.companySizeName
+
+ //绑定事件
+ holder.itemView.setOnClickListener {
+ listener?.onItemClicked(position)
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var customerNameView: TextView = view.findViewById(R.id.customerNameView)
+ var agreementLevelView: TextView = view.findViewById(R.id.agreementLevelView)
+ var overallView: TextView = view.findViewById(R.id.overallView)
+ var scaleView: TextView = view.findViewById(R.id.scaleView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
index 492a239..b214b05 100644
--- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
+++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
@@ -141,6 +141,19 @@
return (t2 - t1) > 0
}
+fun String.toChineseGrade(): String {
+ if (this.isBlank()) {
+ return "级别未知"
+ }
+ return when (this) {
+ "0" -> "A"
+ "1" -> "B"
+ "2" -> "C"
+ "3" -> "D"
+ else -> "级别未知"
+ }
+}
+
fun String.compressImage(context: Context, listener: OnImageCompressListener) {
Luban.with(context)
.load(this)
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
index dcbb471..6de2dc9 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
@@ -84,12 +84,12 @@
override fun initLayoutView(): Int = R.layout.activity_capability
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun onResume() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
index defa8f9..0629f1c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
@@ -1,25 +1,149 @@
package com.casic.xz.meterage.view.home
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.xz.meterage.R
+import com.casic.xz.meterage.adapter.CustomerListAdapter
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.extensions.showEmptyPage
+import com.casic.xz.meterage.model.CustomerListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.view.search.SearchCustomerActivity
+import com.casic.xz.meterage.vm.CustomerViewModel
+import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_capability.rootView
+import kotlinx.android.synthetic.main.activity_customer.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
class CustomerActivity : KotlinBaseActivity() {
- override fun initData() {
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var customerViewModel: CustomerViewModel
+ private lateinit var customerListAdapter: CustomerListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+ override fun initData() {
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java]
+ customerViewModel.customerResult.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ customerLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ customerLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023021301)
+ }
+ }
}
override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.setOnClickListener {
+ navigatePageTo()
+ }
+ customerLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ customerLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getCustomerList()
+ }
}
override fun initLayoutView(): Int = R.layout.activity_customer
override fun observeRequestState() {
-
+ customerViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
}
override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "客户列表"
+ }
+ override fun onResume() {
+ super.onResume()
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ private fun getCustomerList() {
+ customerViewModel.getCustomerList(
+ "",
+ "",
+ "",
+ "",
+ pageIndex
+ )
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023021301 -> {
+ if (isRefresh || isLoadMore) {
+ customerListAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无客户数据") {
+ pageIndex = 1
+ getCustomerList()
+ }
+ } else {
+ emptyView!!.hide()
+ customerListAdapter = CustomerListAdapter(this, dataBeans)
+ customerRecyclerView.addItemDecoration(
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ )
+ customerRecyclerView.adapter = customerListAdapter
+ customerListAdapter.setOnItemClickListener(object :
+ CustomerListAdapter.OnItemClickListener {
+ override fun onItemClicked(position: Int) {
+ val rowsModel = dataBeans[position]
+ navigatePageTo(rowsModel.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
new file mode 100644
index 0000000..5f2cefe
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
@@ -0,0 +1,25 @@
+package com.casic.xz.meterage.view.home
+
+import com.casic.xz.meterage.R
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class CustomerDetailActivity : KotlinBaseActivity() {
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_customer_detail
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
index aea442f..b0bfd9c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
@@ -103,12 +103,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_capability_reasult
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
private val callback = Handler.Callback {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt
new file mode 100644
index 0000000..7e23b3a
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt
@@ -0,0 +1,43 @@
+package com.casic.xz.meterage.view.search
+
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import kotlinx.android.synthetic.main.activity_search_customer.*
+import kotlinx.android.synthetic.main.include_search_input_title.*
+
+/**
+ * 搜索客户
+ * */
+class SearchCustomerActivity : KotlinBaseActivity() {
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ searchTextView.setOnClickListener {
+ navigatePageTo(inputView.text.toString())
+ }
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_search_customer
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ inputView.hint = "查询客户名称、编号"
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //TODO 流式布局显示查询记录Tag?
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt
new file mode 100644
index 0000000..64f00ea
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt
@@ -0,0 +1,150 @@
+package com.casic.xz.meterage.view.search
+
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.DividerItemDecoration
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.adapter.CustomerListAdapter
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.extensions.showEmptyPage
+import com.casic.xz.meterage.model.CustomerListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.view.home.CustomerDetailActivity
+import com.casic.xz.meterage.vm.CustomerViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_search_customer_reasult.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
+
+class SearchCustomerResultActivity : KotlinBaseActivity() {
+
+ private lateinit var param: String
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var customerViewModel: CustomerViewModel
+ private lateinit var customerListAdapter: CustomerListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initData() {
+ param = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java]
+ customerViewModel.customerResult.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ customerLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ customerLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023021302)
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ customerLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ customerLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getCustomerList()
+ }
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_search_customer_reasult
+
+ override fun observeRequestState() {
+ customerViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "查询结果"
+ }
+
+ override fun onResume() {
+ super.onResume()
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ //TODO 查询条件不确定
+ private fun getCustomerList() {
+ customerViewModel.getCustomerList(
+ "",
+ param,
+ "",
+ "",
+ pageIndex
+ )
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023021302 -> {
+ if (isRefresh || isLoadMore) {
+ customerListAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无客户数据") {
+ pageIndex = 1
+ getCustomerList()
+ }
+ } else {
+ emptyView!!.hide()
+ customerListAdapter = CustomerListAdapter(this, dataBeans)
+ customerRecyclerView.addItemDecoration(
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ )
+ customerRecyclerView.adapter = customerListAdapter
+ customerListAdapter.setOnItemClickListener(object :
+ CustomerListAdapter.OnItemClickListener {
+ override fun onItemClicked(position: Int) {
+ val rowsModel = dataBeans[position]
+ navigatePageTo(rowsModel.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index eaea412..b520164 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -56,6 +56,7 @@
+
@@ -64,6 +65,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun getItemCount(): Int = dataRows.size
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_customer_rv_l, parent, false)
+ )
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.customerNameView.text = rowsBean.customerName
+ holder.agreementLevelView.text = rowsBean.grade.toChineseGrade()
+ holder.overallView.text = rowsBean.evaluationName
+ holder.scaleView.text = rowsBean.companySizeName
+
+ //绑定事件
+ holder.itemView.setOnClickListener {
+ listener?.onItemClicked(position)
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var customerNameView: TextView = view.findViewById(R.id.customerNameView)
+ var agreementLevelView: TextView = view.findViewById(R.id.agreementLevelView)
+ var overallView: TextView = view.findViewById(R.id.overallView)
+ var scaleView: TextView = view.findViewById(R.id.scaleView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
index 492a239..b214b05 100644
--- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
+++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
@@ -141,6 +141,19 @@
return (t2 - t1) > 0
}
+fun String.toChineseGrade(): String {
+ if (this.isBlank()) {
+ return "级别未知"
+ }
+ return when (this) {
+ "0" -> "A"
+ "1" -> "B"
+ "2" -> "C"
+ "3" -> "D"
+ else -> "级别未知"
+ }
+}
+
fun String.compressImage(context: Context, listener: OnImageCompressListener) {
Luban.with(context)
.load(this)
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
index dcbb471..6de2dc9 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
@@ -84,12 +84,12 @@
override fun initLayoutView(): Int = R.layout.activity_capability
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun onResume() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
index defa8f9..0629f1c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
@@ -1,25 +1,149 @@
package com.casic.xz.meterage.view.home
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.xz.meterage.R
+import com.casic.xz.meterage.adapter.CustomerListAdapter
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.extensions.showEmptyPage
+import com.casic.xz.meterage.model.CustomerListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.view.search.SearchCustomerActivity
+import com.casic.xz.meterage.vm.CustomerViewModel
+import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_capability.rootView
+import kotlinx.android.synthetic.main.activity_customer.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
class CustomerActivity : KotlinBaseActivity() {
- override fun initData() {
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var customerViewModel: CustomerViewModel
+ private lateinit var customerListAdapter: CustomerListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+ override fun initData() {
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java]
+ customerViewModel.customerResult.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ customerLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ customerLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023021301)
+ }
+ }
}
override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.setOnClickListener {
+ navigatePageTo()
+ }
+ customerLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ customerLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getCustomerList()
+ }
}
override fun initLayoutView(): Int = R.layout.activity_customer
override fun observeRequestState() {
-
+ customerViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
}
override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "客户列表"
+ }
+ override fun onResume() {
+ super.onResume()
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ private fun getCustomerList() {
+ customerViewModel.getCustomerList(
+ "",
+ "",
+ "",
+ "",
+ pageIndex
+ )
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023021301 -> {
+ if (isRefresh || isLoadMore) {
+ customerListAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无客户数据") {
+ pageIndex = 1
+ getCustomerList()
+ }
+ } else {
+ emptyView!!.hide()
+ customerListAdapter = CustomerListAdapter(this, dataBeans)
+ customerRecyclerView.addItemDecoration(
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ )
+ customerRecyclerView.adapter = customerListAdapter
+ customerListAdapter.setOnItemClickListener(object :
+ CustomerListAdapter.OnItemClickListener {
+ override fun onItemClicked(position: Int) {
+ val rowsModel = dataBeans[position]
+ navigatePageTo(rowsModel.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
new file mode 100644
index 0000000..5f2cefe
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
@@ -0,0 +1,25 @@
+package com.casic.xz.meterage.view.home
+
+import com.casic.xz.meterage.R
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class CustomerDetailActivity : KotlinBaseActivity() {
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_customer_detail
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
index aea442f..b0bfd9c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
@@ -103,12 +103,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_capability_reasult
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
private val callback = Handler.Callback {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt
new file mode 100644
index 0000000..7e23b3a
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt
@@ -0,0 +1,43 @@
+package com.casic.xz.meterage.view.search
+
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import kotlinx.android.synthetic.main.activity_search_customer.*
+import kotlinx.android.synthetic.main.include_search_input_title.*
+
+/**
+ * 搜索客户
+ * */
+class SearchCustomerActivity : KotlinBaseActivity() {
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ searchTextView.setOnClickListener {
+ navigatePageTo(inputView.text.toString())
+ }
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_search_customer
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ inputView.hint = "查询客户名称、编号"
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //TODO 流式布局显示查询记录Tag?
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt
new file mode 100644
index 0000000..64f00ea
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt
@@ -0,0 +1,150 @@
+package com.casic.xz.meterage.view.search
+
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.DividerItemDecoration
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.adapter.CustomerListAdapter
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.extensions.showEmptyPage
+import com.casic.xz.meterage.model.CustomerListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.view.home.CustomerDetailActivity
+import com.casic.xz.meterage.vm.CustomerViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_search_customer_reasult.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
+
+class SearchCustomerResultActivity : KotlinBaseActivity() {
+
+ private lateinit var param: String
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var customerViewModel: CustomerViewModel
+ private lateinit var customerListAdapter: CustomerListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initData() {
+ param = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java]
+ customerViewModel.customerResult.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ customerLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ customerLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023021302)
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ customerLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ customerLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getCustomerList()
+ }
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_search_customer_reasult
+
+ override fun observeRequestState() {
+ customerViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "查询结果"
+ }
+
+ override fun onResume() {
+ super.onResume()
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ //TODO 查询条件不确定
+ private fun getCustomerList() {
+ customerViewModel.getCustomerList(
+ "",
+ param,
+ "",
+ "",
+ pageIndex
+ )
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023021302 -> {
+ if (isRefresh || isLoadMore) {
+ customerListAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无客户数据") {
+ pageIndex = 1
+ getCustomerList()
+ }
+ } else {
+ emptyView!!.hide()
+ customerListAdapter = CustomerListAdapter(this, dataBeans)
+ customerRecyclerView.addItemDecoration(
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ )
+ customerRecyclerView.adapter = customerListAdapter
+ customerListAdapter.setOnItemClickListener(object :
+ CustomerListAdapter.OnItemClickListener {
+ override fun onItemClicked(position: Int) {
+ val rowsModel = dataBeans[position]
+ navigatePageTo(rowsModel.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
index 5c2f743..fc2b4d0 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
@@ -86,12 +86,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_equipment_reasult
override fun observeRequestState() {
- equipmentViewModel.loadState.observe(this, {
+ equipmentViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun setupTopBarLayout() {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index eaea412..b520164 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -56,6 +56,7 @@
+
@@ -64,6 +65,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun getItemCount(): Int = dataRows.size
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_customer_rv_l, parent, false)
+ )
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.customerNameView.text = rowsBean.customerName
+ holder.agreementLevelView.text = rowsBean.grade.toChineseGrade()
+ holder.overallView.text = rowsBean.evaluationName
+ holder.scaleView.text = rowsBean.companySizeName
+
+ //绑定事件
+ holder.itemView.setOnClickListener {
+ listener?.onItemClicked(position)
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var customerNameView: TextView = view.findViewById(R.id.customerNameView)
+ var agreementLevelView: TextView = view.findViewById(R.id.agreementLevelView)
+ var overallView: TextView = view.findViewById(R.id.overallView)
+ var scaleView: TextView = view.findViewById(R.id.scaleView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
index 492a239..b214b05 100644
--- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
+++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
@@ -141,6 +141,19 @@
return (t2 - t1) > 0
}
+fun String.toChineseGrade(): String {
+ if (this.isBlank()) {
+ return "级别未知"
+ }
+ return when (this) {
+ "0" -> "A"
+ "1" -> "B"
+ "2" -> "C"
+ "3" -> "D"
+ else -> "级别未知"
+ }
+}
+
fun String.compressImage(context: Context, listener: OnImageCompressListener) {
Luban.with(context)
.load(this)
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
index dcbb471..6de2dc9 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
@@ -84,12 +84,12 @@
override fun initLayoutView(): Int = R.layout.activity_capability
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun onResume() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
index defa8f9..0629f1c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
@@ -1,25 +1,149 @@
package com.casic.xz.meterage.view.home
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.xz.meterage.R
+import com.casic.xz.meterage.adapter.CustomerListAdapter
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.extensions.showEmptyPage
+import com.casic.xz.meterage.model.CustomerListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.view.search.SearchCustomerActivity
+import com.casic.xz.meterage.vm.CustomerViewModel
+import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_capability.rootView
+import kotlinx.android.synthetic.main.activity_customer.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
class CustomerActivity : KotlinBaseActivity() {
- override fun initData() {
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var customerViewModel: CustomerViewModel
+ private lateinit var customerListAdapter: CustomerListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+ override fun initData() {
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java]
+ customerViewModel.customerResult.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ customerLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ customerLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023021301)
+ }
+ }
}
override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.setOnClickListener {
+ navigatePageTo()
+ }
+ customerLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ customerLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getCustomerList()
+ }
}
override fun initLayoutView(): Int = R.layout.activity_customer
override fun observeRequestState() {
-
+ customerViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
}
override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "客户列表"
+ }
+ override fun onResume() {
+ super.onResume()
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ private fun getCustomerList() {
+ customerViewModel.getCustomerList(
+ "",
+ "",
+ "",
+ "",
+ pageIndex
+ )
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023021301 -> {
+ if (isRefresh || isLoadMore) {
+ customerListAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无客户数据") {
+ pageIndex = 1
+ getCustomerList()
+ }
+ } else {
+ emptyView!!.hide()
+ customerListAdapter = CustomerListAdapter(this, dataBeans)
+ customerRecyclerView.addItemDecoration(
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ )
+ customerRecyclerView.adapter = customerListAdapter
+ customerListAdapter.setOnItemClickListener(object :
+ CustomerListAdapter.OnItemClickListener {
+ override fun onItemClicked(position: Int) {
+ val rowsModel = dataBeans[position]
+ navigatePageTo(rowsModel.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
new file mode 100644
index 0000000..5f2cefe
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
@@ -0,0 +1,25 @@
+package com.casic.xz.meterage.view.home
+
+import com.casic.xz.meterage.R
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class CustomerDetailActivity : KotlinBaseActivity() {
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_customer_detail
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
index aea442f..b0bfd9c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
@@ -103,12 +103,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_capability_reasult
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
private val callback = Handler.Callback {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt
new file mode 100644
index 0000000..7e23b3a
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt
@@ -0,0 +1,43 @@
+package com.casic.xz.meterage.view.search
+
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import kotlinx.android.synthetic.main.activity_search_customer.*
+import kotlinx.android.synthetic.main.include_search_input_title.*
+
+/**
+ * 搜索客户
+ * */
+class SearchCustomerActivity : KotlinBaseActivity() {
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ searchTextView.setOnClickListener {
+ navigatePageTo(inputView.text.toString())
+ }
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_search_customer
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ inputView.hint = "查询客户名称、编号"
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //TODO 流式布局显示查询记录Tag?
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt
new file mode 100644
index 0000000..64f00ea
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt
@@ -0,0 +1,150 @@
+package com.casic.xz.meterage.view.search
+
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.DividerItemDecoration
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.adapter.CustomerListAdapter
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.extensions.showEmptyPage
+import com.casic.xz.meterage.model.CustomerListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.view.home.CustomerDetailActivity
+import com.casic.xz.meterage.vm.CustomerViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_search_customer_reasult.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
+
+class SearchCustomerResultActivity : KotlinBaseActivity() {
+
+ private lateinit var param: String
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var customerViewModel: CustomerViewModel
+ private lateinit var customerListAdapter: CustomerListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initData() {
+ param = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java]
+ customerViewModel.customerResult.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ customerLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ customerLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023021302)
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ customerLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ customerLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getCustomerList()
+ }
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_search_customer_reasult
+
+ override fun observeRequestState() {
+ customerViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "查询结果"
+ }
+
+ override fun onResume() {
+ super.onResume()
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ //TODO 查询条件不确定
+ private fun getCustomerList() {
+ customerViewModel.getCustomerList(
+ "",
+ param,
+ "",
+ "",
+ pageIndex
+ )
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023021302 -> {
+ if (isRefresh || isLoadMore) {
+ customerListAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无客户数据") {
+ pageIndex = 1
+ getCustomerList()
+ }
+ } else {
+ emptyView!!.hide()
+ customerListAdapter = CustomerListAdapter(this, dataBeans)
+ customerRecyclerView.addItemDecoration(
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ )
+ customerRecyclerView.adapter = customerListAdapter
+ customerListAdapter.setOnItemClickListener(object :
+ CustomerListAdapter.OnItemClickListener {
+ override fun onItemClicked(position: Int) {
+ val rowsModel = dataBeans[position]
+ navigatePageTo(rowsModel.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
index 5c2f743..fc2b4d0 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
@@ -86,12 +86,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_equipment_reasult
override fun observeRequestState() {
- equipmentViewModel.loadState.observe(this, {
+ equipmentViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun setupTopBarLayout() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt
index 898b189..f275890 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt
@@ -84,12 +84,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_meterage_train_reasult
override fun observeRequestState() {
- meterageTrainViewModel.loadState.observe(this, {
+ meterageTrainViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun setupTopBarLayout() {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index eaea412..b520164 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -56,6 +56,7 @@
+
@@ -64,6 +65,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun getItemCount(): Int = dataRows.size
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_customer_rv_l, parent, false)
+ )
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.customerNameView.text = rowsBean.customerName
+ holder.agreementLevelView.text = rowsBean.grade.toChineseGrade()
+ holder.overallView.text = rowsBean.evaluationName
+ holder.scaleView.text = rowsBean.companySizeName
+
+ //绑定事件
+ holder.itemView.setOnClickListener {
+ listener?.onItemClicked(position)
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var customerNameView: TextView = view.findViewById(R.id.customerNameView)
+ var agreementLevelView: TextView = view.findViewById(R.id.agreementLevelView)
+ var overallView: TextView = view.findViewById(R.id.overallView)
+ var scaleView: TextView = view.findViewById(R.id.scaleView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
index 492a239..b214b05 100644
--- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
+++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
@@ -141,6 +141,19 @@
return (t2 - t1) > 0
}
+fun String.toChineseGrade(): String {
+ if (this.isBlank()) {
+ return "级别未知"
+ }
+ return when (this) {
+ "0" -> "A"
+ "1" -> "B"
+ "2" -> "C"
+ "3" -> "D"
+ else -> "级别未知"
+ }
+}
+
fun String.compressImage(context: Context, listener: OnImageCompressListener) {
Luban.with(context)
.load(this)
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
index dcbb471..6de2dc9 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
@@ -84,12 +84,12 @@
override fun initLayoutView(): Int = R.layout.activity_capability
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun onResume() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
index defa8f9..0629f1c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
@@ -1,25 +1,149 @@
package com.casic.xz.meterage.view.home
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.xz.meterage.R
+import com.casic.xz.meterage.adapter.CustomerListAdapter
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.extensions.showEmptyPage
+import com.casic.xz.meterage.model.CustomerListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.view.search.SearchCustomerActivity
+import com.casic.xz.meterage.vm.CustomerViewModel
+import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_capability.rootView
+import kotlinx.android.synthetic.main.activity_customer.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
class CustomerActivity : KotlinBaseActivity() {
- override fun initData() {
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var customerViewModel: CustomerViewModel
+ private lateinit var customerListAdapter: CustomerListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+ override fun initData() {
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java]
+ customerViewModel.customerResult.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ customerLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ customerLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023021301)
+ }
+ }
}
override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.setOnClickListener {
+ navigatePageTo()
+ }
+ customerLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ customerLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getCustomerList()
+ }
}
override fun initLayoutView(): Int = R.layout.activity_customer
override fun observeRequestState() {
-
+ customerViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
}
override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "客户列表"
+ }
+ override fun onResume() {
+ super.onResume()
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ private fun getCustomerList() {
+ customerViewModel.getCustomerList(
+ "",
+ "",
+ "",
+ "",
+ pageIndex
+ )
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023021301 -> {
+ if (isRefresh || isLoadMore) {
+ customerListAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无客户数据") {
+ pageIndex = 1
+ getCustomerList()
+ }
+ } else {
+ emptyView!!.hide()
+ customerListAdapter = CustomerListAdapter(this, dataBeans)
+ customerRecyclerView.addItemDecoration(
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ )
+ customerRecyclerView.adapter = customerListAdapter
+ customerListAdapter.setOnItemClickListener(object :
+ CustomerListAdapter.OnItemClickListener {
+ override fun onItemClicked(position: Int) {
+ val rowsModel = dataBeans[position]
+ navigatePageTo(rowsModel.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
new file mode 100644
index 0000000..5f2cefe
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
@@ -0,0 +1,25 @@
+package com.casic.xz.meterage.view.home
+
+import com.casic.xz.meterage.R
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class CustomerDetailActivity : KotlinBaseActivity() {
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_customer_detail
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
index aea442f..b0bfd9c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
@@ -103,12 +103,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_capability_reasult
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
private val callback = Handler.Callback {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt
new file mode 100644
index 0000000..7e23b3a
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt
@@ -0,0 +1,43 @@
+package com.casic.xz.meterage.view.search
+
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import kotlinx.android.synthetic.main.activity_search_customer.*
+import kotlinx.android.synthetic.main.include_search_input_title.*
+
+/**
+ * 搜索客户
+ * */
+class SearchCustomerActivity : KotlinBaseActivity() {
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ searchTextView.setOnClickListener {
+ navigatePageTo(inputView.text.toString())
+ }
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_search_customer
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ inputView.hint = "查询客户名称、编号"
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //TODO 流式布局显示查询记录Tag?
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt
new file mode 100644
index 0000000..64f00ea
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt
@@ -0,0 +1,150 @@
+package com.casic.xz.meterage.view.search
+
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.DividerItemDecoration
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.adapter.CustomerListAdapter
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.extensions.showEmptyPage
+import com.casic.xz.meterage.model.CustomerListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.view.home.CustomerDetailActivity
+import com.casic.xz.meterage.vm.CustomerViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_search_customer_reasult.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
+
+class SearchCustomerResultActivity : KotlinBaseActivity() {
+
+ private lateinit var param: String
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var customerViewModel: CustomerViewModel
+ private lateinit var customerListAdapter: CustomerListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initData() {
+ param = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java]
+ customerViewModel.customerResult.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ customerLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ customerLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023021302)
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ customerLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ customerLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getCustomerList()
+ }
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_search_customer_reasult
+
+ override fun observeRequestState() {
+ customerViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "查询结果"
+ }
+
+ override fun onResume() {
+ super.onResume()
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ //TODO 查询条件不确定
+ private fun getCustomerList() {
+ customerViewModel.getCustomerList(
+ "",
+ param,
+ "",
+ "",
+ pageIndex
+ )
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023021302 -> {
+ if (isRefresh || isLoadMore) {
+ customerListAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无客户数据") {
+ pageIndex = 1
+ getCustomerList()
+ }
+ } else {
+ emptyView!!.hide()
+ customerListAdapter = CustomerListAdapter(this, dataBeans)
+ customerRecyclerView.addItemDecoration(
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ )
+ customerRecyclerView.adapter = customerListAdapter
+ customerListAdapter.setOnItemClickListener(object :
+ CustomerListAdapter.OnItemClickListener {
+ override fun onItemClicked(position: Int) {
+ val rowsModel = dataBeans[position]
+ navigatePageTo(rowsModel.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
index 5c2f743..fc2b4d0 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
@@ -86,12 +86,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_equipment_reasult
override fun observeRequestState() {
- equipmentViewModel.loadState.observe(this, {
+ equipmentViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun setupTopBarLayout() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt
index 898b189..f275890 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt
@@ -84,12 +84,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_meterage_train_reasult
override fun observeRequestState() {
- meterageTrainViewModel.loadState.observe(this, {
+ meterageTrainViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun setupTopBarLayout() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt
index c885d5c..32712e2 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt
@@ -85,12 +85,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_standard_device_reasult
override fun observeRequestState() {
- equipmentViewModel.loadState.observe(this, {
+ equipmentViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun setupTopBarLayout() {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index eaea412..b520164 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -56,6 +56,7 @@
+
@@ -64,6 +65,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun getItemCount(): Int = dataRows.size
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_customer_rv_l, parent, false)
+ )
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.customerNameView.text = rowsBean.customerName
+ holder.agreementLevelView.text = rowsBean.grade.toChineseGrade()
+ holder.overallView.text = rowsBean.evaluationName
+ holder.scaleView.text = rowsBean.companySizeName
+
+ //绑定事件
+ holder.itemView.setOnClickListener {
+ listener?.onItemClicked(position)
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var customerNameView: TextView = view.findViewById(R.id.customerNameView)
+ var agreementLevelView: TextView = view.findViewById(R.id.agreementLevelView)
+ var overallView: TextView = view.findViewById(R.id.overallView)
+ var scaleView: TextView = view.findViewById(R.id.scaleView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
index 492a239..b214b05 100644
--- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
+++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
@@ -141,6 +141,19 @@
return (t2 - t1) > 0
}
+fun String.toChineseGrade(): String {
+ if (this.isBlank()) {
+ return "级别未知"
+ }
+ return when (this) {
+ "0" -> "A"
+ "1" -> "B"
+ "2" -> "C"
+ "3" -> "D"
+ else -> "级别未知"
+ }
+}
+
fun String.compressImage(context: Context, listener: OnImageCompressListener) {
Luban.with(context)
.load(this)
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
index dcbb471..6de2dc9 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
@@ -84,12 +84,12 @@
override fun initLayoutView(): Int = R.layout.activity_capability
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun onResume() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
index defa8f9..0629f1c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
@@ -1,25 +1,149 @@
package com.casic.xz.meterage.view.home
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.xz.meterage.R
+import com.casic.xz.meterage.adapter.CustomerListAdapter
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.extensions.showEmptyPage
+import com.casic.xz.meterage.model.CustomerListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.view.search.SearchCustomerActivity
+import com.casic.xz.meterage.vm.CustomerViewModel
+import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_capability.rootView
+import kotlinx.android.synthetic.main.activity_customer.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
class CustomerActivity : KotlinBaseActivity() {
- override fun initData() {
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var customerViewModel: CustomerViewModel
+ private lateinit var customerListAdapter: CustomerListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+ override fun initData() {
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java]
+ customerViewModel.customerResult.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ customerLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ customerLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023021301)
+ }
+ }
}
override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.setOnClickListener {
+ navigatePageTo()
+ }
+ customerLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ customerLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getCustomerList()
+ }
}
override fun initLayoutView(): Int = R.layout.activity_customer
override fun observeRequestState() {
-
+ customerViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
}
override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "客户列表"
+ }
+ override fun onResume() {
+ super.onResume()
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ private fun getCustomerList() {
+ customerViewModel.getCustomerList(
+ "",
+ "",
+ "",
+ "",
+ pageIndex
+ )
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023021301 -> {
+ if (isRefresh || isLoadMore) {
+ customerListAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无客户数据") {
+ pageIndex = 1
+ getCustomerList()
+ }
+ } else {
+ emptyView!!.hide()
+ customerListAdapter = CustomerListAdapter(this, dataBeans)
+ customerRecyclerView.addItemDecoration(
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ )
+ customerRecyclerView.adapter = customerListAdapter
+ customerListAdapter.setOnItemClickListener(object :
+ CustomerListAdapter.OnItemClickListener {
+ override fun onItemClicked(position: Int) {
+ val rowsModel = dataBeans[position]
+ navigatePageTo(rowsModel.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
new file mode 100644
index 0000000..5f2cefe
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
@@ -0,0 +1,25 @@
+package com.casic.xz.meterage.view.home
+
+import com.casic.xz.meterage.R
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class CustomerDetailActivity : KotlinBaseActivity() {
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_customer_detail
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
index aea442f..b0bfd9c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
@@ -103,12 +103,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_capability_reasult
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
private val callback = Handler.Callback {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt
new file mode 100644
index 0000000..7e23b3a
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt
@@ -0,0 +1,43 @@
+package com.casic.xz.meterage.view.search
+
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import kotlinx.android.synthetic.main.activity_search_customer.*
+import kotlinx.android.synthetic.main.include_search_input_title.*
+
+/**
+ * 搜索客户
+ * */
+class SearchCustomerActivity : KotlinBaseActivity() {
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ searchTextView.setOnClickListener {
+ navigatePageTo(inputView.text.toString())
+ }
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_search_customer
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ inputView.hint = "查询客户名称、编号"
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //TODO 流式布局显示查询记录Tag?
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt
new file mode 100644
index 0000000..64f00ea
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt
@@ -0,0 +1,150 @@
+package com.casic.xz.meterage.view.search
+
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.DividerItemDecoration
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.adapter.CustomerListAdapter
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.extensions.showEmptyPage
+import com.casic.xz.meterage.model.CustomerListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.view.home.CustomerDetailActivity
+import com.casic.xz.meterage.vm.CustomerViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_search_customer_reasult.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
+
+class SearchCustomerResultActivity : KotlinBaseActivity() {
+
+ private lateinit var param: String
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var customerViewModel: CustomerViewModel
+ private lateinit var customerListAdapter: CustomerListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initData() {
+ param = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java]
+ customerViewModel.customerResult.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ customerLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ customerLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023021302)
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ customerLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ customerLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getCustomerList()
+ }
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_search_customer_reasult
+
+ override fun observeRequestState() {
+ customerViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "查询结果"
+ }
+
+ override fun onResume() {
+ super.onResume()
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ //TODO 查询条件不确定
+ private fun getCustomerList() {
+ customerViewModel.getCustomerList(
+ "",
+ param,
+ "",
+ "",
+ pageIndex
+ )
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023021302 -> {
+ if (isRefresh || isLoadMore) {
+ customerListAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无客户数据") {
+ pageIndex = 1
+ getCustomerList()
+ }
+ } else {
+ emptyView!!.hide()
+ customerListAdapter = CustomerListAdapter(this, dataBeans)
+ customerRecyclerView.addItemDecoration(
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ )
+ customerRecyclerView.adapter = customerListAdapter
+ customerListAdapter.setOnItemClickListener(object :
+ CustomerListAdapter.OnItemClickListener {
+ override fun onItemClicked(position: Int) {
+ val rowsModel = dataBeans[position]
+ navigatePageTo(rowsModel.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
index 5c2f743..fc2b4d0 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
@@ -86,12 +86,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_equipment_reasult
override fun observeRequestState() {
- equipmentViewModel.loadState.observe(this, {
+ equipmentViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun setupTopBarLayout() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt
index 898b189..f275890 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt
@@ -84,12 +84,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_meterage_train_reasult
override fun observeRequestState() {
- meterageTrainViewModel.loadState.observe(this, {
+ meterageTrainViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun setupTopBarLayout() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt
index c885d5c..32712e2 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt
@@ -85,12 +85,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_standard_device_reasult
override fun observeRequestState() {
- equipmentViewModel.loadState.observe(this, {
+ equipmentViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun setupTopBarLayout() {
diff --git a/app/src/main/res/layout/activity_customer.xml b/app/src/main/res/layout/activity_customer.xml
index 77d9ef6..22ec15f 100644
--- a/app/src/main/res/layout/activity_customer.xml
+++ b/app/src/main/res/layout/activity_customer.xml
@@ -1,6 +1,98 @@
-
+ android:layout_height="match_parent"
+ android:orientation="vertical">
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index eaea412..b520164 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -56,6 +56,7 @@
+
@@ -64,6 +65,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun getItemCount(): Int = dataRows.size
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_customer_rv_l, parent, false)
+ )
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.customerNameView.text = rowsBean.customerName
+ holder.agreementLevelView.text = rowsBean.grade.toChineseGrade()
+ holder.overallView.text = rowsBean.evaluationName
+ holder.scaleView.text = rowsBean.companySizeName
+
+ //绑定事件
+ holder.itemView.setOnClickListener {
+ listener?.onItemClicked(position)
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var customerNameView: TextView = view.findViewById(R.id.customerNameView)
+ var agreementLevelView: TextView = view.findViewById(R.id.agreementLevelView)
+ var overallView: TextView = view.findViewById(R.id.overallView)
+ var scaleView: TextView = view.findViewById(R.id.scaleView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
index 492a239..b214b05 100644
--- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
+++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
@@ -141,6 +141,19 @@
return (t2 - t1) > 0
}
+fun String.toChineseGrade(): String {
+ if (this.isBlank()) {
+ return "级别未知"
+ }
+ return when (this) {
+ "0" -> "A"
+ "1" -> "B"
+ "2" -> "C"
+ "3" -> "D"
+ else -> "级别未知"
+ }
+}
+
fun String.compressImage(context: Context, listener: OnImageCompressListener) {
Luban.with(context)
.load(this)
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
index dcbb471..6de2dc9 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
@@ -84,12 +84,12 @@
override fun initLayoutView(): Int = R.layout.activity_capability
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun onResume() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
index defa8f9..0629f1c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
@@ -1,25 +1,149 @@
package com.casic.xz.meterage.view.home
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.xz.meterage.R
+import com.casic.xz.meterage.adapter.CustomerListAdapter
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.extensions.showEmptyPage
+import com.casic.xz.meterage.model.CustomerListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.view.search.SearchCustomerActivity
+import com.casic.xz.meterage.vm.CustomerViewModel
+import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_capability.rootView
+import kotlinx.android.synthetic.main.activity_customer.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
class CustomerActivity : KotlinBaseActivity() {
- override fun initData() {
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var customerViewModel: CustomerViewModel
+ private lateinit var customerListAdapter: CustomerListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+ override fun initData() {
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java]
+ customerViewModel.customerResult.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ customerLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ customerLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023021301)
+ }
+ }
}
override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.setOnClickListener {
+ navigatePageTo()
+ }
+ customerLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ customerLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getCustomerList()
+ }
}
override fun initLayoutView(): Int = R.layout.activity_customer
override fun observeRequestState() {
-
+ customerViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
}
override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "客户列表"
+ }
+ override fun onResume() {
+ super.onResume()
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ private fun getCustomerList() {
+ customerViewModel.getCustomerList(
+ "",
+ "",
+ "",
+ "",
+ pageIndex
+ )
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023021301 -> {
+ if (isRefresh || isLoadMore) {
+ customerListAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无客户数据") {
+ pageIndex = 1
+ getCustomerList()
+ }
+ } else {
+ emptyView!!.hide()
+ customerListAdapter = CustomerListAdapter(this, dataBeans)
+ customerRecyclerView.addItemDecoration(
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ )
+ customerRecyclerView.adapter = customerListAdapter
+ customerListAdapter.setOnItemClickListener(object :
+ CustomerListAdapter.OnItemClickListener {
+ override fun onItemClicked(position: Int) {
+ val rowsModel = dataBeans[position]
+ navigatePageTo(rowsModel.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
new file mode 100644
index 0000000..5f2cefe
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
@@ -0,0 +1,25 @@
+package com.casic.xz.meterage.view.home
+
+import com.casic.xz.meterage.R
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class CustomerDetailActivity : KotlinBaseActivity() {
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_customer_detail
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
index aea442f..b0bfd9c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
@@ -103,12 +103,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_capability_reasult
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
private val callback = Handler.Callback {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt
new file mode 100644
index 0000000..7e23b3a
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt
@@ -0,0 +1,43 @@
+package com.casic.xz.meterage.view.search
+
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import kotlinx.android.synthetic.main.activity_search_customer.*
+import kotlinx.android.synthetic.main.include_search_input_title.*
+
+/**
+ * 搜索客户
+ * */
+class SearchCustomerActivity : KotlinBaseActivity() {
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ searchTextView.setOnClickListener {
+ navigatePageTo(inputView.text.toString())
+ }
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_search_customer
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ inputView.hint = "查询客户名称、编号"
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //TODO 流式布局显示查询记录Tag?
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt
new file mode 100644
index 0000000..64f00ea
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt
@@ -0,0 +1,150 @@
+package com.casic.xz.meterage.view.search
+
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.DividerItemDecoration
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.adapter.CustomerListAdapter
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.extensions.showEmptyPage
+import com.casic.xz.meterage.model.CustomerListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.view.home.CustomerDetailActivity
+import com.casic.xz.meterage.vm.CustomerViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_search_customer_reasult.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
+
+class SearchCustomerResultActivity : KotlinBaseActivity() {
+
+ private lateinit var param: String
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var customerViewModel: CustomerViewModel
+ private lateinit var customerListAdapter: CustomerListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initData() {
+ param = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java]
+ customerViewModel.customerResult.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ customerLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ customerLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023021302)
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ customerLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ customerLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getCustomerList()
+ }
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_search_customer_reasult
+
+ override fun observeRequestState() {
+ customerViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "查询结果"
+ }
+
+ override fun onResume() {
+ super.onResume()
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ //TODO 查询条件不确定
+ private fun getCustomerList() {
+ customerViewModel.getCustomerList(
+ "",
+ param,
+ "",
+ "",
+ pageIndex
+ )
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023021302 -> {
+ if (isRefresh || isLoadMore) {
+ customerListAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无客户数据") {
+ pageIndex = 1
+ getCustomerList()
+ }
+ } else {
+ emptyView!!.hide()
+ customerListAdapter = CustomerListAdapter(this, dataBeans)
+ customerRecyclerView.addItemDecoration(
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ )
+ customerRecyclerView.adapter = customerListAdapter
+ customerListAdapter.setOnItemClickListener(object :
+ CustomerListAdapter.OnItemClickListener {
+ override fun onItemClicked(position: Int) {
+ val rowsModel = dataBeans[position]
+ navigatePageTo(rowsModel.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
index 5c2f743..fc2b4d0 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
@@ -86,12 +86,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_equipment_reasult
override fun observeRequestState() {
- equipmentViewModel.loadState.observe(this, {
+ equipmentViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun setupTopBarLayout() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt
index 898b189..f275890 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt
@@ -84,12 +84,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_meterage_train_reasult
override fun observeRequestState() {
- meterageTrainViewModel.loadState.observe(this, {
+ meterageTrainViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun setupTopBarLayout() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt
index c885d5c..32712e2 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt
@@ -85,12 +85,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_standard_device_reasult
override fun observeRequestState() {
- equipmentViewModel.loadState.observe(this, {
+ equipmentViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun setupTopBarLayout() {
diff --git a/app/src/main/res/layout/activity_customer.xml b/app/src/main/res/layout/activity_customer.xml
index 77d9ef6..22ec15f 100644
--- a/app/src/main/res/layout/activity_customer.xml
+++ b/app/src/main/res/layout/activity_customer.xml
@@ -1,6 +1,98 @@
-
+ android:layout_height="match_parent"
+ android:orientation="vertical">
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_customer_detail.xml b/app/src/main/res/layout/activity_customer_detail.xml
new file mode 100644
index 0000000..77d9ef6
--- /dev/null
+++ b/app/src/main/res/layout/activity_customer_detail.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index eaea412..b520164 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -56,6 +56,7 @@
+
@@ -64,6 +65,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun getItemCount(): Int = dataRows.size
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_customer_rv_l, parent, false)
+ )
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.customerNameView.text = rowsBean.customerName
+ holder.agreementLevelView.text = rowsBean.grade.toChineseGrade()
+ holder.overallView.text = rowsBean.evaluationName
+ holder.scaleView.text = rowsBean.companySizeName
+
+ //绑定事件
+ holder.itemView.setOnClickListener {
+ listener?.onItemClicked(position)
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var customerNameView: TextView = view.findViewById(R.id.customerNameView)
+ var agreementLevelView: TextView = view.findViewById(R.id.agreementLevelView)
+ var overallView: TextView = view.findViewById(R.id.overallView)
+ var scaleView: TextView = view.findViewById(R.id.scaleView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
index 492a239..b214b05 100644
--- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
+++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
@@ -141,6 +141,19 @@
return (t2 - t1) > 0
}
+fun String.toChineseGrade(): String {
+ if (this.isBlank()) {
+ return "级别未知"
+ }
+ return when (this) {
+ "0" -> "A"
+ "1" -> "B"
+ "2" -> "C"
+ "3" -> "D"
+ else -> "级别未知"
+ }
+}
+
fun String.compressImage(context: Context, listener: OnImageCompressListener) {
Luban.with(context)
.load(this)
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
index dcbb471..6de2dc9 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
@@ -84,12 +84,12 @@
override fun initLayoutView(): Int = R.layout.activity_capability
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun onResume() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
index defa8f9..0629f1c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
@@ -1,25 +1,149 @@
package com.casic.xz.meterage.view.home
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.xz.meterage.R
+import com.casic.xz.meterage.adapter.CustomerListAdapter
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.extensions.showEmptyPage
+import com.casic.xz.meterage.model.CustomerListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.view.search.SearchCustomerActivity
+import com.casic.xz.meterage.vm.CustomerViewModel
+import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_capability.rootView
+import kotlinx.android.synthetic.main.activity_customer.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
class CustomerActivity : KotlinBaseActivity() {
- override fun initData() {
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var customerViewModel: CustomerViewModel
+ private lateinit var customerListAdapter: CustomerListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+ override fun initData() {
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java]
+ customerViewModel.customerResult.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ customerLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ customerLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023021301)
+ }
+ }
}
override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.setOnClickListener {
+ navigatePageTo()
+ }
+ customerLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ customerLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getCustomerList()
+ }
}
override fun initLayoutView(): Int = R.layout.activity_customer
override fun observeRequestState() {
-
+ customerViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
}
override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "客户列表"
+ }
+ override fun onResume() {
+ super.onResume()
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ private fun getCustomerList() {
+ customerViewModel.getCustomerList(
+ "",
+ "",
+ "",
+ "",
+ pageIndex
+ )
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023021301 -> {
+ if (isRefresh || isLoadMore) {
+ customerListAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无客户数据") {
+ pageIndex = 1
+ getCustomerList()
+ }
+ } else {
+ emptyView!!.hide()
+ customerListAdapter = CustomerListAdapter(this, dataBeans)
+ customerRecyclerView.addItemDecoration(
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ )
+ customerRecyclerView.adapter = customerListAdapter
+ customerListAdapter.setOnItemClickListener(object :
+ CustomerListAdapter.OnItemClickListener {
+ override fun onItemClicked(position: Int) {
+ val rowsModel = dataBeans[position]
+ navigatePageTo(rowsModel.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
new file mode 100644
index 0000000..5f2cefe
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
@@ -0,0 +1,25 @@
+package com.casic.xz.meterage.view.home
+
+import com.casic.xz.meterage.R
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class CustomerDetailActivity : KotlinBaseActivity() {
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_customer_detail
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
index aea442f..b0bfd9c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
@@ -103,12 +103,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_capability_reasult
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
private val callback = Handler.Callback {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt
new file mode 100644
index 0000000..7e23b3a
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt
@@ -0,0 +1,43 @@
+package com.casic.xz.meterage.view.search
+
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import kotlinx.android.synthetic.main.activity_search_customer.*
+import kotlinx.android.synthetic.main.include_search_input_title.*
+
+/**
+ * 搜索客户
+ * */
+class SearchCustomerActivity : KotlinBaseActivity() {
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ searchTextView.setOnClickListener {
+ navigatePageTo(inputView.text.toString())
+ }
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_search_customer
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ inputView.hint = "查询客户名称、编号"
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //TODO 流式布局显示查询记录Tag?
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt
new file mode 100644
index 0000000..64f00ea
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt
@@ -0,0 +1,150 @@
+package com.casic.xz.meterage.view.search
+
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.DividerItemDecoration
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.adapter.CustomerListAdapter
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.extensions.showEmptyPage
+import com.casic.xz.meterage.model.CustomerListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.view.home.CustomerDetailActivity
+import com.casic.xz.meterage.vm.CustomerViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_search_customer_reasult.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
+
+class SearchCustomerResultActivity : KotlinBaseActivity() {
+
+ private lateinit var param: String
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var customerViewModel: CustomerViewModel
+ private lateinit var customerListAdapter: CustomerListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initData() {
+ param = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java]
+ customerViewModel.customerResult.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ customerLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ customerLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023021302)
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ customerLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ customerLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getCustomerList()
+ }
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_search_customer_reasult
+
+ override fun observeRequestState() {
+ customerViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "查询结果"
+ }
+
+ override fun onResume() {
+ super.onResume()
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ //TODO 查询条件不确定
+ private fun getCustomerList() {
+ customerViewModel.getCustomerList(
+ "",
+ param,
+ "",
+ "",
+ pageIndex
+ )
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023021302 -> {
+ if (isRefresh || isLoadMore) {
+ customerListAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无客户数据") {
+ pageIndex = 1
+ getCustomerList()
+ }
+ } else {
+ emptyView!!.hide()
+ customerListAdapter = CustomerListAdapter(this, dataBeans)
+ customerRecyclerView.addItemDecoration(
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ )
+ customerRecyclerView.adapter = customerListAdapter
+ customerListAdapter.setOnItemClickListener(object :
+ CustomerListAdapter.OnItemClickListener {
+ override fun onItemClicked(position: Int) {
+ val rowsModel = dataBeans[position]
+ navigatePageTo(rowsModel.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
index 5c2f743..fc2b4d0 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
@@ -86,12 +86,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_equipment_reasult
override fun observeRequestState() {
- equipmentViewModel.loadState.observe(this, {
+ equipmentViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun setupTopBarLayout() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt
index 898b189..f275890 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt
@@ -84,12 +84,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_meterage_train_reasult
override fun observeRequestState() {
- meterageTrainViewModel.loadState.observe(this, {
+ meterageTrainViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun setupTopBarLayout() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt
index c885d5c..32712e2 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt
@@ -85,12 +85,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_standard_device_reasult
override fun observeRequestState() {
- equipmentViewModel.loadState.observe(this, {
+ equipmentViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun setupTopBarLayout() {
diff --git a/app/src/main/res/layout/activity_customer.xml b/app/src/main/res/layout/activity_customer.xml
index 77d9ef6..22ec15f 100644
--- a/app/src/main/res/layout/activity_customer.xml
+++ b/app/src/main/res/layout/activity_customer.xml
@@ -1,6 +1,98 @@
-
+ android:layout_height="match_parent"
+ android:orientation="vertical">
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_customer_detail.xml b/app/src/main/res/layout/activity_customer_detail.xml
new file mode 100644
index 0000000..77d9ef6
--- /dev/null
+++ b/app/src/main/res/layout/activity_customer_detail.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_search_customer.xml b/app/src/main/res/layout/activity_search_customer.xml
new file mode 100644
index 0000000..e8350cc
--- /dev/null
+++ b/app/src/main/res/layout/activity_search_customer.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index eaea412..b520164 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -56,6 +56,7 @@
+
@@ -64,6 +65,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun getItemCount(): Int = dataRows.size
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_customer_rv_l, parent, false)
+ )
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.customerNameView.text = rowsBean.customerName
+ holder.agreementLevelView.text = rowsBean.grade.toChineseGrade()
+ holder.overallView.text = rowsBean.evaluationName
+ holder.scaleView.text = rowsBean.companySizeName
+
+ //绑定事件
+ holder.itemView.setOnClickListener {
+ listener?.onItemClicked(position)
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var customerNameView: TextView = view.findViewById(R.id.customerNameView)
+ var agreementLevelView: TextView = view.findViewById(R.id.agreementLevelView)
+ var overallView: TextView = view.findViewById(R.id.overallView)
+ var scaleView: TextView = view.findViewById(R.id.scaleView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
index 492a239..b214b05 100644
--- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
+++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
@@ -141,6 +141,19 @@
return (t2 - t1) > 0
}
+fun String.toChineseGrade(): String {
+ if (this.isBlank()) {
+ return "级别未知"
+ }
+ return when (this) {
+ "0" -> "A"
+ "1" -> "B"
+ "2" -> "C"
+ "3" -> "D"
+ else -> "级别未知"
+ }
+}
+
fun String.compressImage(context: Context, listener: OnImageCompressListener) {
Luban.with(context)
.load(this)
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
index dcbb471..6de2dc9 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
@@ -84,12 +84,12 @@
override fun initLayoutView(): Int = R.layout.activity_capability
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun onResume() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
index defa8f9..0629f1c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
@@ -1,25 +1,149 @@
package com.casic.xz.meterage.view.home
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.xz.meterage.R
+import com.casic.xz.meterage.adapter.CustomerListAdapter
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.extensions.showEmptyPage
+import com.casic.xz.meterage.model.CustomerListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.view.search.SearchCustomerActivity
+import com.casic.xz.meterage.vm.CustomerViewModel
+import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_capability.rootView
+import kotlinx.android.synthetic.main.activity_customer.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
class CustomerActivity : KotlinBaseActivity() {
- override fun initData() {
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var customerViewModel: CustomerViewModel
+ private lateinit var customerListAdapter: CustomerListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+ override fun initData() {
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java]
+ customerViewModel.customerResult.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ customerLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ customerLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023021301)
+ }
+ }
}
override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.setOnClickListener {
+ navigatePageTo()
+ }
+ customerLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ customerLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getCustomerList()
+ }
}
override fun initLayoutView(): Int = R.layout.activity_customer
override fun observeRequestState() {
-
+ customerViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
}
override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "客户列表"
+ }
+ override fun onResume() {
+ super.onResume()
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ private fun getCustomerList() {
+ customerViewModel.getCustomerList(
+ "",
+ "",
+ "",
+ "",
+ pageIndex
+ )
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023021301 -> {
+ if (isRefresh || isLoadMore) {
+ customerListAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无客户数据") {
+ pageIndex = 1
+ getCustomerList()
+ }
+ } else {
+ emptyView!!.hide()
+ customerListAdapter = CustomerListAdapter(this, dataBeans)
+ customerRecyclerView.addItemDecoration(
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ )
+ customerRecyclerView.adapter = customerListAdapter
+ customerListAdapter.setOnItemClickListener(object :
+ CustomerListAdapter.OnItemClickListener {
+ override fun onItemClicked(position: Int) {
+ val rowsModel = dataBeans[position]
+ navigatePageTo(rowsModel.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
new file mode 100644
index 0000000..5f2cefe
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
@@ -0,0 +1,25 @@
+package com.casic.xz.meterage.view.home
+
+import com.casic.xz.meterage.R
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class CustomerDetailActivity : KotlinBaseActivity() {
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_customer_detail
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
index aea442f..b0bfd9c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
@@ -103,12 +103,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_capability_reasult
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
private val callback = Handler.Callback {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt
new file mode 100644
index 0000000..7e23b3a
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt
@@ -0,0 +1,43 @@
+package com.casic.xz.meterage.view.search
+
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import kotlinx.android.synthetic.main.activity_search_customer.*
+import kotlinx.android.synthetic.main.include_search_input_title.*
+
+/**
+ * 搜索客户
+ * */
+class SearchCustomerActivity : KotlinBaseActivity() {
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ searchTextView.setOnClickListener {
+ navigatePageTo(inputView.text.toString())
+ }
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_search_customer
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ inputView.hint = "查询客户名称、编号"
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //TODO 流式布局显示查询记录Tag?
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt
new file mode 100644
index 0000000..64f00ea
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt
@@ -0,0 +1,150 @@
+package com.casic.xz.meterage.view.search
+
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.DividerItemDecoration
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.adapter.CustomerListAdapter
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.extensions.showEmptyPage
+import com.casic.xz.meterage.model.CustomerListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.view.home.CustomerDetailActivity
+import com.casic.xz.meterage.vm.CustomerViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_search_customer_reasult.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
+
+class SearchCustomerResultActivity : KotlinBaseActivity() {
+
+ private lateinit var param: String
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var customerViewModel: CustomerViewModel
+ private lateinit var customerListAdapter: CustomerListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initData() {
+ param = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java]
+ customerViewModel.customerResult.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ customerLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ customerLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023021302)
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ customerLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ customerLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getCustomerList()
+ }
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_search_customer_reasult
+
+ override fun observeRequestState() {
+ customerViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "查询结果"
+ }
+
+ override fun onResume() {
+ super.onResume()
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ //TODO 查询条件不确定
+ private fun getCustomerList() {
+ customerViewModel.getCustomerList(
+ "",
+ param,
+ "",
+ "",
+ pageIndex
+ )
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023021302 -> {
+ if (isRefresh || isLoadMore) {
+ customerListAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无客户数据") {
+ pageIndex = 1
+ getCustomerList()
+ }
+ } else {
+ emptyView!!.hide()
+ customerListAdapter = CustomerListAdapter(this, dataBeans)
+ customerRecyclerView.addItemDecoration(
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ )
+ customerRecyclerView.adapter = customerListAdapter
+ customerListAdapter.setOnItemClickListener(object :
+ CustomerListAdapter.OnItemClickListener {
+ override fun onItemClicked(position: Int) {
+ val rowsModel = dataBeans[position]
+ navigatePageTo(rowsModel.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
index 5c2f743..fc2b4d0 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
@@ -86,12 +86,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_equipment_reasult
override fun observeRequestState() {
- equipmentViewModel.loadState.observe(this, {
+ equipmentViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun setupTopBarLayout() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt
index 898b189..f275890 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt
@@ -84,12 +84,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_meterage_train_reasult
override fun observeRequestState() {
- meterageTrainViewModel.loadState.observe(this, {
+ meterageTrainViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun setupTopBarLayout() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt
index c885d5c..32712e2 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt
@@ -85,12 +85,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_standard_device_reasult
override fun observeRequestState() {
- equipmentViewModel.loadState.observe(this, {
+ equipmentViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun setupTopBarLayout() {
diff --git a/app/src/main/res/layout/activity_customer.xml b/app/src/main/res/layout/activity_customer.xml
index 77d9ef6..22ec15f 100644
--- a/app/src/main/res/layout/activity_customer.xml
+++ b/app/src/main/res/layout/activity_customer.xml
@@ -1,6 +1,98 @@
-
+ android:layout_height="match_parent"
+ android:orientation="vertical">
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_customer_detail.xml b/app/src/main/res/layout/activity_customer_detail.xml
new file mode 100644
index 0000000..77d9ef6
--- /dev/null
+++ b/app/src/main/res/layout/activity_customer_detail.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_search_customer.xml b/app/src/main/res/layout/activity_search_customer.xml
new file mode 100644
index 0000000..e8350cc
--- /dev/null
+++ b/app/src/main/res/layout/activity_search_customer.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_search_customer_reasult.xml b/app/src/main/res/layout/activity_search_customer_reasult.xml
new file mode 100644
index 0000000..69a77f1
--- /dev/null
+++ b/app/src/main/res/layout/activity_search_customer_reasult.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index eaea412..b520164 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -56,6 +56,7 @@
+
@@ -64,6 +65,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun getItemCount(): Int = dataRows.size
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_customer_rv_l, parent, false)
+ )
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows[position]
+ holder.customerNameView.text = rowsBean.customerName
+ holder.agreementLevelView.text = rowsBean.grade.toChineseGrade()
+ holder.overallView.text = rowsBean.evaluationName
+ holder.scaleView.text = rowsBean.companySizeName
+
+ //绑定事件
+ holder.itemView.setOnClickListener {
+ listener?.onItemClicked(position)
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var customerNameView: TextView = view.findViewById(R.id.customerNameView)
+ var agreementLevelView: TextView = view.findViewById(R.id.agreementLevelView)
+ var overallView: TextView = view.findViewById(R.id.overallView)
+ var scaleView: TextView = view.findViewById(R.id.scaleView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClicked(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
index 492a239..b214b05 100644
--- a/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
+++ b/app/src/main/java/com/casic/xz/meterage/extensions/String.kt
@@ -141,6 +141,19 @@
return (t2 - t1) > 0
}
+fun String.toChineseGrade(): String {
+ if (this.isBlank()) {
+ return "级别未知"
+ }
+ return when (this) {
+ "0" -> "A"
+ "1" -> "B"
+ "2" -> "C"
+ "3" -> "D"
+ else -> "级别未知"
+ }
+}
+
fun String.compressImage(context: Context, listener: OnImageCompressListener) {
Luban.with(context)
.load(this)
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
index dcbb471..6de2dc9 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CapabilityActivity.kt
@@ -84,12 +84,12 @@
override fun initLayoutView(): Int = R.layout.activity_capability
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun onResume() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
index defa8f9..0629f1c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerActivity.kt
@@ -1,25 +1,149 @@
package com.casic.xz.meterage.view.home
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.DividerItemDecoration
import com.casic.xz.meterage.R
+import com.casic.xz.meterage.adapter.CustomerListAdapter
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.extensions.showEmptyPage
+import com.casic.xz.meterage.model.CustomerListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.view.search.SearchCustomerActivity
+import com.casic.xz.meterage.vm.CustomerViewModel
+import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_capability.rootView
+import kotlinx.android.synthetic.main.activity_customer.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
class CustomerActivity : KotlinBaseActivity() {
- override fun initData() {
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var customerViewModel: CustomerViewModel
+ private lateinit var customerListAdapter: CustomerListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+ override fun initData() {
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java]
+ customerViewModel.customerResult.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ customerLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ customerLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023021301)
+ }
+ }
}
override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ rightOperateView.setOnClickListener {
+ navigatePageTo()
+ }
+ customerLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ customerLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getCustomerList()
+ }
}
override fun initLayoutView(): Int = R.layout.activity_customer
override fun observeRequestState() {
-
+ customerViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
}
override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "客户列表"
+ }
+ override fun onResume() {
+ super.onResume()
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ private fun getCustomerList() {
+ customerViewModel.getCustomerList(
+ "",
+ "",
+ "",
+ "",
+ pageIndex
+ )
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023021301 -> {
+ if (isRefresh || isLoadMore) {
+ customerListAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无客户数据") {
+ pageIndex = 1
+ getCustomerList()
+ }
+ } else {
+ emptyView!!.hide()
+ customerListAdapter = CustomerListAdapter(this, dataBeans)
+ customerRecyclerView.addItemDecoration(
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ )
+ customerRecyclerView.adapter = customerListAdapter
+ customerListAdapter.setOnItemClickListener(object :
+ CustomerListAdapter.OnItemClickListener {
+ override fun onItemClicked(position: Int) {
+ val rowsModel = dataBeans[position]
+ navigatePageTo(rowsModel.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
new file mode 100644
index 0000000..5f2cefe
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/CustomerDetailActivity.kt
@@ -0,0 +1,25 @@
+package com.casic.xz.meterage.view.home
+
+import com.casic.xz.meterage.R
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
+class CustomerDetailActivity : KotlinBaseActivity() {
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_customer_detail
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
index aea442f..b0bfd9c 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCapabilityResultActivity.kt
@@ -103,12 +103,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_capability_reasult
override fun observeRequestState() {
- capabilityViewModel.loadState.observe(this, {
+ capabilityViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
private val callback = Handler.Callback {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt
new file mode 100644
index 0000000..7e23b3a
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerActivity.kt
@@ -0,0 +1,43 @@
+package com.casic.xz.meterage.view.search
+
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import kotlinx.android.synthetic.main.activity_search_customer.*
+import kotlinx.android.synthetic.main.include_search_input_title.*
+
+/**
+ * 搜索客户
+ * */
+class SearchCustomerActivity : KotlinBaseActivity() {
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+ searchTextView.setOnClickListener {
+ navigatePageTo(inputView.text.toString())
+ }
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_search_customer
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ inputView.hint = "查询客户名称、编号"
+ }
+
+ override fun onResume() {
+ super.onResume()
+ //TODO 流式布局显示查询记录Tag?
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt
new file mode 100644
index 0000000..64f00ea
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchCustomerResultActivity.kt
@@ -0,0 +1,150 @@
+package com.casic.xz.meterage.view.search
+
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.DividerItemDecoration
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.adapter.CustomerListAdapter
+import com.casic.xz.meterage.extensions.initLayoutImmersionBar
+import com.casic.xz.meterage.extensions.showEmptyPage
+import com.casic.xz.meterage.model.CustomerListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.view.home.CustomerDetailActivity
+import com.casic.xz.meterage.vm.CustomerViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_search_customer_reasult.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
+
+class SearchCustomerResultActivity : KotlinBaseActivity() {
+
+ private lateinit var param: String
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var customerViewModel: CustomerViewModel
+ private lateinit var customerListAdapter: CustomerListAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initData() {
+ param = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ customerViewModel = ViewModelProvider(this)[CustomerViewModel::class.java]
+ customerViewModel.customerResult.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ customerLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ customerLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023021302)
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ customerLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ customerLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getCustomerList()
+ }
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_search_customer_reasult
+
+ override fun observeRequestState() {
+ customerViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "查询结果"
+ }
+
+ override fun onResume() {
+ super.onResume()
+ pageIndex = 1
+ getCustomerList()
+ }
+
+ //TODO 查询条件不确定
+ private fun getCustomerList() {
+ customerViewModel.getCustomerList(
+ "",
+ param,
+ "",
+ "",
+ pageIndex
+ )
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023021302 -> {
+ if (isRefresh || isLoadMore) {
+ customerListAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无客户数据") {
+ pageIndex = 1
+ getCustomerList()
+ }
+ } else {
+ emptyView!!.hide()
+ customerListAdapter = CustomerListAdapter(this, dataBeans)
+ customerRecyclerView.addItemDecoration(
+ DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
+ )
+ customerRecyclerView.adapter = customerListAdapter
+ customerListAdapter.setOnItemClickListener(object :
+ CustomerListAdapter.OnItemClickListener {
+ override fun onItemClicked(position: Int) {
+ val rowsModel = dataBeans[position]
+ navigatePageTo(rowsModel.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
index 5c2f743..fc2b4d0 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt
@@ -86,12 +86,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_equipment_reasult
override fun observeRequestState() {
- equipmentViewModel.loadState.observe(this, {
+ equipmentViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun setupTopBarLayout() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt
index 898b189..f275890 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchMeterageTrainResultActivity.kt
@@ -84,12 +84,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_meterage_train_reasult
override fun observeRequestState() {
- meterageTrainViewModel.loadState.observe(this, {
+ meterageTrainViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun setupTopBarLayout() {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt
index c885d5c..32712e2 100644
--- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt
+++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchStandardDeviceResultActivity.kt
@@ -85,12 +85,12 @@
override fun initLayoutView(): Int = R.layout.activity_search_standard_device_reasult
override fun observeRequestState() {
- equipmentViewModel.loadState.observe(this, {
+ equipmentViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
else -> LoadingDialogHub.dismiss()
}
- })
+ }
}
override fun setupTopBarLayout() {
diff --git a/app/src/main/res/layout/activity_customer.xml b/app/src/main/res/layout/activity_customer.xml
index 77d9ef6..22ec15f 100644
--- a/app/src/main/res/layout/activity_customer.xml
+++ b/app/src/main/res/layout/activity_customer.xml
@@ -1,6 +1,98 @@
-
+ android:layout_height="match_parent"
+ android:orientation="vertical">
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_customer_detail.xml b/app/src/main/res/layout/activity_customer_detail.xml
new file mode 100644
index 0000000..77d9ef6
--- /dev/null
+++ b/app/src/main/res/layout/activity_customer_detail.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_search_customer.xml b/app/src/main/res/layout/activity_search_customer.xml
new file mode 100644
index 0000000..e8350cc
--- /dev/null
+++ b/app/src/main/res/layout/activity_search_customer.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_search_customer_reasult.xml b/app/src/main/res/layout/activity_search_customer_reasult.xml
new file mode 100644
index 0000000..69a77f1
--- /dev/null
+++ b/app/src/main/res/layout/activity_search_customer_reasult.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_customer_rv_l.xml b/app/src/main/res/layout/item_customer_rv_l.xml
new file mode 100644
index 0000000..c6a3417
--- /dev/null
+++ b/app/src/main/res/layout/item_customer_rv_l.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file