package com.kuanzhai.user.dialog
|
|
import android.view.Gravity
|
import androidx.core.os.bundleOf
|
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.*
|
|
class ReasonDialog:BaseDialogFragment() {
|
override fun setContentView() = R.layout.dialog_reason
|
|
private val passenger = arrayListOf<Passenger>()
|
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:ReasonCallback? = null
|
|
override fun setGravity() = Gravity.BOTTOM
|
|
override fun initView() {
|
rv_passenger.layoutManager = LinearLayoutManager(requireContext())
|
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人")
|
else{
|
passenger.add(Passenger())
|
passengerAdapter.notifyDataSetChanged()
|
tv_count.text = "出行人数 ${passenger.size}"
|
}
|
}
|
|
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 {
|
if (passenger.filter { it.name.isEmpty() }.isNotEmpty()){
|
myToast("出行人姓名不能为空")
|
return@setOnClickListener
|
}
|
if (reasonAdapter.checked.isEmpty()){
|
myToast("请选择出行事由")
|
return@setOnClickListener
|
}
|
if (rg_pay_way.checkedRadioButtonId == -1){
|
myToast("请选择付费方式")
|
return@setOnClickListener
|
}
|
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,payWay:Int,reason:ArrayList<String>,passenger:ArrayList<Passenger>,checkReason:String,content:String,callback: ReasonCallback){
|
val reasonDialog = ReasonDialog()
|
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")
|
}
|
}
|
}
|