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/ui/charter/CharterActivity.kt |  141 +++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 137 insertions(+), 4 deletions(-)

diff --git a/app/src/main/java/com/kuanzhai/user/ui/charter/CharterActivity.kt b/app/src/main/java/com/kuanzhai/user/ui/charter/CharterActivity.kt
index bf3968c..26c8721 100644
--- a/app/src/main/java/com/kuanzhai/user/ui/charter/CharterActivity.kt
+++ b/app/src/main/java/com/kuanzhai/user/ui/charter/CharterActivity.kt
@@ -1,33 +1,149 @@
 package com.kuanzhai.user.ui.charter
 
+import android.app.Activity
+import android.content.Intent
+import androidx.core.os.bundleOf
+import androidx.recyclerview.widget.LinearLayoutManager
 import cn.sinata.xldutils.callPhone
+import cn.sinata.xldutils.clickDelay
+import cn.sinata.xldutils.utils.myToast
 import cn.sinata.xldutils.utils.optString
-import com.kuanzhai.user.OkApplication
+import cn.sinata.xldutils.utils.parserTime
+import com.google.gson.Gson
+import com.kuanzhai.user.KuanzhaiApplication
 import com.kuanzhai.user.R
+import com.kuanzhai.user.dialog.OfficialCharterTimeDialog
 import com.kuanzhai.user.network.HttpManager
+import com.kuanzhai.user.network.entity.Passenger
 import com.kuanzhai.user.network.request
-import com.kuanzhai.user.network.requestByF
 import com.kuanzhai.user.ui.H5Activity
 import com.kuanzhai.user.ui.TransparentStatusBarActivity
+import com.kuanzhai.user.ui.official.adapter.CharterPassengerAdapter
+import com.kuanzhai.user.ui.trip.ChoosePositionActivity
 import kotlinx.android.synthetic.main.fragment_charter.*
 import org.jetbrains.anko.sdk27.coroutines.onClick
 import org.jetbrains.anko.startActivity
-import org.jetbrains.anko.support.v4.startActivity
+import org.jetbrains.anko.startActivityForResult
 
 class CharterActivity:TransparentStatusBarActivity() {
     override fun setContentView() = R.layout.fragment_charter
 
+    private var start = ""
+    private var startLat = 0.0
+    private var startLon = 0.0
+    private var end = ""
+    private var endLat = 0.0
+    private var endLon = 0.0
+
+    private val passenger = arrayListOf<Passenger>()
+    private val adapter by lazy { CharterPassengerAdapter(passenger,tv_count) }
+
     override fun initClick() {
+        tv_start_time.clickDelay {
+            val chooseReserveTimeDialog = OfficialCharterTimeDialog()
+            chooseReserveTimeDialog.setCallback(object : OfficialCharterTimeDialog.Callback {
+                override fun onOk(formatS: String) {
+                    tv_start_time.text = formatS
+                    tv_end_time.text = ""
+                    tv_duration.text = "0天"
+                }
+            })
+            chooseReserveTimeDialog.show(supportFragmentManager, "time")
+        }
+        tv_end_time.clickDelay {
+            if (tv_start_time.text.isEmpty()){
+                myToast("请选择开始时间")
+                return@clickDelay
+            }
+            val chooseReserveTimeDialog = OfficialCharterTimeDialog()
+            chooseReserveTimeDialog.arguments = bundleOf("startTime" to tv_start_time.text.toString())
+            chooseReserveTimeDialog.setCallback(object : OfficialCharterTimeDialog.Callback {
+                override fun onOk(formatS: String) {
+                    tv_end_time.text = formatS
+                    tv_duration.text = "%.1f天".format((formatS.parserTime("yyyy-MM-dd HH:mm") - tv_start_time.text.toString().parserTime("yyyy-MM-dd HH:mm")).toDouble()/(24L*60*60*1000))
+                }
+            })
+            chooseReserveTimeDialog.show(supportFragmentManager, "time")
+        }
+        tv_start.setOnClickListener {
+                startActivityForResult<ChoosePositionActivity>(1)
+        }
+        tv_end.setOnClickListener {
+                startActivityForResult<ChoosePositionActivity>(2,"isStart" to false)
+        }
+        tv_add.setOnClickListener {
+            if (passenger.size == 4)
+                myToast("最多可添加4人")
+            else{
+                passenger.add(Passenger())
+                tv_count.text = "${passenger.size}"
+                adapter.notifyDataSetChanged()
+            }
+        }
+        tv_action.setOnClickListener {
+            val startTime = tv_start_time.text.toString()
+            if (startTime.isEmpty()){
+                myToast("请选择用车开始时间")
+                return@setOnClickListener
+            }
+            val endTime = tv_end_time.text.toString()
+            if (endTime.isEmpty()){
+                myToast("请选择用车结束时间")
+                return@setOnClickListener
+            }
+            if (startLat == 0.0){
+                myToast("请选择出发地")
+                return@setOnClickListener
+            }
+            if (endLat == 0.0){
+                myToast("请选择目的地")
+                return@setOnClickListener
+            }
+            if (passenger.filter { it.name.isEmpty() }.isNotEmpty()){
+                myToast("乘车人姓名不能为空")
+                return@setOnClickListener
+            }
+            val rst = Intent()
+            rst.putExtra("startTime",startTime).putExtra("endTime",endTime)
+                .putExtra("startName",start).putExtra("startLat",startLat).putExtra("startLon",startLon)
+                .putExtra("endName",end).putExtra("endLat",endLat).putExtra("endLon",endLon)
+                .putExtra("isRemind",sw_remind.isChecked).putExtra("passenger",passenger)
+            setResult(Activity.RESULT_OK,rst)
+            finish()
+        }
     }
 
     override fun initView() {
         title = "包车"
+
+        val startTime = intent.getStringExtra("startTime")
+        tv_start_time.text = startTime
+        val endTime = intent.getStringExtra("endTime")
+        tv_end_time.text = endTime
+        if (startTime.isNotEmpty()&&endTime.isNotEmpty())
+            tv_duration.text = "%.1f天".format((endTime.parserTime("yyyy-MM-dd HH:mm") - startTime.parserTime("yyyy-MM-dd HH:mm")).toDouble()/(24L*60*60*1000))
+
+        start = intent.getStringExtra("start")
+        startLat = intent.getDoubleExtra("startLat",0.0)
+        startLon = intent.getDoubleExtra("startLon",0.0)
+        tv_start.text = start
+
+        end = intent.getStringExtra("end")
+        endLat = intent.getDoubleExtra("endLat",0.0)
+        endLon = intent.getDoubleExtra("endLon",0.0)
+        tv_end.text = end
+
+        sw_remind.isChecked = intent.getBooleanExtra("isRemind",false)
+        passenger.addAll(intent.getParcelableArrayListExtra("passenger"))
+
+        rv_passenger.layoutManager = LinearLayoutManager(this)
+        rv_passenger.adapter = adapter
         getPhone()
         getRule()
     }
 
     private fun getPhone(){
-        HttpManager.queryPhones(OkApplication.chooseCityCode).request(this){ _, data->
+        HttpManager.queryPhones(KuanzhaiApplication.chooseCityCode).request(this){ _, data->
             data?.filter { it.type == 3 }?.forEach {
                 tv_phone.text = "包车调度电话:%s".format(it.phone)
                 tv_phone.onClick {_->
@@ -46,4 +162,21 @@
             }
         }
     }
+
+    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+        super.onActivityResult(requestCode, resultCode, data)
+        if (resultCode == Activity.RESULT_OK&&data!=null){
+            if (requestCode == 1){
+                startLat = data.getDoubleExtra("lat", 0.0)
+                startLon = data.getDoubleExtra("lon", 0.0)
+                start = data.getStringExtra("name") ?: ""
+                tv_start.text = start
+            }else{
+                endLat = data.getDoubleExtra("lat", 0.0)
+                endLon = data.getDoubleExtra("lon", 0.0)
+                end = data.getStringExtra("name") ?: ""
+                tv_end.text = end
+            }
+        }
+    }
 }

--
Gitblit v1.7.1