| | |
| | | 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.* |
| | |
| | | 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人") |
| | |
| | | } |
| | | } |
| | | |
| | | 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 { |
| | |
| | | myToast("出行人姓名不能为空") |
| | | return@setOnClickListener |
| | | } |
| | | if (reasonAdapter.checked == -1){ |
| | | if (reasonAdapter.checked.isEmpty()){ |
| | | myToast("请选择出行事由") |
| | | return@setOnClickListener |
| | | } |
| | |
| | | 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") |
| | | } |