From a141213b3234d2d83ffb6a5d2d42ede0e722d949 Mon Sep 17 00:00:00 2001
From: lmw <125975490@qq.com>
Date: 星期二, 13 六月 2023 11:57:21 +0800
Subject: [PATCH] 公务出行开发完成

---
 app/src/main/java/com/kuanzhai/user/dialog/ReasonDialog.kt |   61 +++++++++++++++++++++++++++---
 1 files changed, 55 insertions(+), 6 deletions(-)

diff --git a/app/src/main/java/com/kuanzhai/user/dialog/ReasonDialog.kt b/app/src/main/java/com/kuanzhai/user/dialog/ReasonDialog.kt
index ace4612..3f0d053 100644
--- a/app/src/main/java/com/kuanzhai/user/dialog/ReasonDialog.kt
+++ b/app/src/main/java/com/kuanzhai/user/dialog/ReasonDialog.kt
@@ -5,12 +5,16 @@
 import androidx.fragment.app.FragmentManager
 import androidx.recyclerview.widget.GridLayoutManager
 import androidx.recyclerview.widget.LinearLayoutManager
+import cn.sinata.xldutils.activity.BaseActivity
 import cn.sinata.xldutils.fragment.BaseDialogFragment
 import cn.sinata.xldutils.utils.myToast
 import cn.sinata.xldutils.utils.showAllowingStateLoss
 import com.kuanzhai.user.R
 import com.kuanzhai.user.interfaces.StringCallback
+import com.kuanzhai.user.network.HttpManager
 import com.kuanzhai.user.network.entity.Passenger
+import com.kuanzhai.user.network.request
+import com.kuanzhai.user.ui.MainActivity
 import com.kuanzhai.user.ui.official.adapter.PassengerAdapter
 import com.kuanzhai.user.ui.official.adapter.ReasonAdapter
 import kotlinx.android.synthetic.main.dialog_reason.*
@@ -22,15 +26,44 @@
     private val passengerAdapter by lazy { PassengerAdapter(passenger,tv_count) }
     private val reason by lazy { arguments?.getStringArrayList("reason")?: arrayListOf() }
     private val reasonAdapter by lazy { ReasonAdapter(reason) }
+    private val passengers by lazy { arguments?.getParcelableArrayList<Passenger>("passenger")?: arrayListOf() }
 
-    private var callback:StringCallback? = null
+    private var callback:ReasonCallback? = null
 
     override fun setGravity() = Gravity.BOTTOM
 
     override fun initView() {
         rv_passenger.layoutManager = LinearLayoutManager(requireContext())
-        passenger.add(Passenger(arguments?.getString("name")?:""))
+        passenger.addAll(passengers)
+        if (passenger.isEmpty())
+            passenger.add(Passenger((requireActivity() as MainActivity).userInfo?.name?:"",(requireActivity() as MainActivity).userInfo?.phone?:""))
+        tv_count.text = "出行人数 ${passenger.size}"
+
         rv_passenger.adapter = passengerAdapter
+        passengerAdapter.callback = object :PassengerAdapter.MoreCallback{
+            override fun onClick(position: Int) {
+                HttpManager.queryStaff().request(requireActivity() as BaseActivity){_,data->
+                    val list = (data ?: arrayListOf()).filter { it.name.isNotEmpty() }
+                    if (list.isEmpty())
+                        myToast("暂无常用乘车人")
+                    else{
+                        val singleWheelDialog = SingleWheelDialog()
+                        val arrayListOf = arrayListOf<String>()
+                        val nameList = list.map { it.name }
+                        arrayListOf.addAll(nameList)
+                        singleWheelDialog.arguments = bundleOf("title" to "常用乘车人","data" to arrayListOf)
+                        singleWheelDialog.show(childFragmentManager,"p")
+                        singleWheelDialog.setCallback(object :StringCallback{
+                            override fun onRlt(rlt: String) {
+                                passenger[position].name = list[nameList.indexOf(rlt)].name
+                                passenger[position].phone = list[nameList.indexOf(rlt)].phone
+                                passengerAdapter.notifyItemChanged(position)
+                            }
+                        })
+                    }
+                }
+            }
+        }
         iv_add.setOnClickListener {
             if (passenger.size == 4)
                 myToast("最多可添加4人")
@@ -41,6 +74,18 @@
             }
         }
 
+        val checkReason = arguments?.getString("checkReason")?:""
+        val checkIndex = checkReason.split(",").map { reason.indexOf(it) }
+        if (checkReason!= "事由出行")
+            reasonAdapter.checked.addAll(checkIndex)
+        val payWay = arguments?.getInt("payWay",0)?:0
+        if (payWay == 1)
+            rb_self.isChecked = true
+        else if (payWay == 2)
+            rb_company.isChecked = true
+
+        et_content.setText(arguments?.getString("content"))
+
         rv_reason.layoutManager = GridLayoutManager(requireContext(),4)
         rv_reason.adapter = reasonAdapter
         tv_action.setOnClickListener {
@@ -48,7 +93,7 @@
                 myToast("出行人姓名不能为空")
                 return@setOnClickListener
             }
-            if (reasonAdapter.checked == -1){
+            if (reasonAdapter.checked.isEmpty()){
                 myToast("请选择出行事由")
                 return@setOnClickListener
             }
@@ -56,15 +101,19 @@
                 myToast("请选择付费方式")
                 return@setOnClickListener
             }
-            callback?.onRlt(reason[reasonAdapter.checked])
+            callback?.onResult(passenger,reasonAdapter.checked.joinToString (","){ reason[it] },if (rb_company.isChecked) 2 else 1,et_content.text.toString())
             dismissAllowingStateLoss()
         }
     }
 
+    interface ReasonCallback{
+        fun onResult(passengers:List<Passenger>,reason:String,payWay:Int,remark:String)
+    }
+
     companion object{
-        fun show(fm: FragmentManager, name:String,reason:ArrayList<String>,callback: StringCallback){
+        fun show(fm: FragmentManager,payWay:Int,reason:ArrayList<String>,passenger:ArrayList<Passenger>,checkReason:String,content:String,callback: ReasonCallback){
             val reasonDialog = ReasonDialog()
-            reasonDialog.arguments = bundleOf("name" to name,"reason" to reason)
+            reasonDialog.arguments = bundleOf("payWay" to payWay,"reason" to reason,"passenger" to passenger,"checkReason" to checkReason,"content" to content)
             reasonDialog.callback = callback
             reasonDialog.showAllowingStateLoss(fm,"reason")
         }

--
Gitblit v1.7.1