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