package com.fuban.user.ui.crosscity
|
|
import android.app.Activity
|
import android.content.Intent
|
import android.view.View
|
import android.widget.TextView
|
import androidx.core.os.bundleOf
|
import androidx.core.view.get
|
import androidx.recyclerview.widget.LinearLayoutManager
|
import cn.sinata.xldutils.callPhone
|
import cn.sinata.xldutils.gone
|
import cn.sinata.xldutils.utils.toTime
|
import cn.sinata.xldutils.utils.toWeek
|
import cn.sinata.xldutils.view.SwipeRefreshRecyclerLayout
|
import cn.sinata.xldutils.visible
|
import com.haibin.calendarview.Calendar
|
import com.haibin.calendarview.CalendarView
|
import com.fuban.user.FBApplication
|
import com.fuban.user.R
|
import com.fuban.user.network.HttpManager
|
import com.fuban.user.network.entity.Line
|
import com.fuban.user.network.entity.Shift
|
import com.fuban.user.network.request
|
import com.fuban.user.ui.TransparentStatusBarActivity
|
import com.fuban.user.ui.crosscity.adapter.ShiftAdapter
|
import com.fuban.user.dialog.TipDialog
|
import kotlinx.android.synthetic.main.activity_shift.*
|
import org.jetbrains.anko.find
|
import org.jetbrains.anko.sdk27.coroutines.onClick
|
import org.jetbrains.anko.startActivityForResult
|
|
class ShiftActivity : TransparentStatusBarActivity(),SwipeRefreshRecyclerLayout.OnRefreshListener,
|
CalendarView.OnCalendarInterceptListener {
|
override fun setContentView() = R.layout.activity_shift
|
|
private val data by lazy {
|
intent.getParcelableExtra<Line>("data")
|
}
|
private var firstTime = System.currentTimeMillis() //第一天的时间戳,默认今天
|
private val timeArray = arrayListOf<Long>() //顶部6天的时间
|
private val shifts = arrayListOf<Shift>()
|
private val adapter = ShiftAdapter(shifts)
|
private val driverId by lazy { //如果不为0表示扫码下单,指定司机
|
intent.getIntExtra("driverId",0)
|
}
|
|
override fun initClick() {
|
tv_more.onClick {
|
if(cl_calendar.visibility == View.GONE){
|
cl_calendar.visible()
|
bg.visible()
|
}else{
|
cl_calendar.gone()
|
bg.gone()
|
}
|
}
|
|
bg.onClick {
|
bg.gone()
|
cl_calendar.gone()
|
}
|
|
iv_last.onClick {
|
calendar.scrollToPre()
|
}
|
|
iv_next.onClick {
|
calendar.scrollToNext()
|
}
|
|
adapter.setOnItemClickListener { _, position ->
|
if (shifts[position].carId!=0||shifts[position].laveSeat!=0){
|
if (driverId == 0)//正常下单
|
startActivityForResult<ConfirmCrossOrderActivity>(1,"data" to shifts[position],
|
"startCity" to intent.getStringExtra("startCity"),
|
"endCity" to intent.getStringExtra("endCity"),
|
"startId" to intent.getIntExtra("startId",0),
|
"endId" to intent.getIntExtra("endId",0),
|
"lineId" to data.id,
|
"time" to timeArray[rg_day.indexOfChild(find(rg_day.checkedRadioButtonId))])
|
else{
|
setResult(Activity.RESULT_OK,intent.putExtra("shift",
|
shifts[position]).putExtra("time",timeArray[rg_day.indexOfChild(find(rg_day.checkedRadioButtonId))]))
|
finish()
|
}
|
}else{
|
val tipDialog = TipDialog()
|
tipDialog.arguments = bundleOf("msg" to "是否拨打电话进行人工调度车辆?","ok" to "是")
|
tipDialog.setCallback(object :TipDialog.OnClickCallback{
|
override fun onOk() {
|
callPhone(FBApplication.phoneService)
|
}
|
|
override fun onCancel() {
|
}
|
})
|
tipDialog.show(supportFragmentManager,"tip")
|
}
|
}
|
}
|
|
override fun initView() {
|
title = if (driverId == 0) "选择车辆" else "选择班次"
|
tv_start.text = data.startAddress
|
tv_end.text = data.endAddress
|
lv_shift.setLayoutManager(LinearLayoutManager(this))
|
lv_shift.setMode(SwipeRefreshRecyclerLayout.Mode.Top)
|
lv_shift.setOnRefreshListener(this)
|
lv_shift.setAdapter(adapter)
|
setDay()
|
rg_day.setOnCheckedChangeListener { group, checkedId ->
|
getData()
|
}
|
initCalendar()
|
}
|
|
override fun onResume() {
|
super.onResume()
|
getData(false)
|
}
|
|
private fun initCalendar() {
|
tv_date.text = "${calendar.curYear}年${calendar.curMonth}月"
|
calendar.scrollToCurrent()
|
calendar.setOnMonthChangeListener { year, month ->
|
tv_date.text = "${year}年${month}月"
|
}
|
calendar.setOnCalendarInterceptListener(this)
|
calendar.setOnCalendarSelectListener(object :CalendarView.OnCalendarSelectListener{
|
override fun onCalendarSelect(calendar: Calendar?, isClick: Boolean) {
|
calendar?.apply {
|
firstTime = timeInMillis
|
setDay()
|
if (rb_1.isChecked)
|
getData()
|
else
|
rb_1.isChecked = true
|
bg.gone()
|
cl_calendar.gone()
|
}
|
}
|
|
override fun onCalendarOutOfRange(calendar: Calendar?) {
|
}
|
})
|
}
|
|
private fun getData(isRefresh:Boolean = true){
|
val day = timeArray[rg_day.indexOfChild(find(rg_day.checkedRadioButtonId))].toTime("yyyy-MM-dd")
|
if (isRefresh)
|
lv_shift.isRefreshing = true
|
HttpManager.queryDriver(day,data.id,if (driverId== 0) null else driverId).request(this,success = {_,data->
|
lv_shift.isRefreshing = false
|
shifts.clear()
|
shifts.addAll(data!!)
|
adapter.notifyDataSetChanged()
|
}){_,_->
|
lv_shift.isRefreshing = false
|
}
|
}
|
|
private fun setDay(){
|
timeArray.clear()
|
timeArray.addAll((0L until 6L).map {
|
firstTime+(it*24*60*60*1000)
|
})
|
timeArray.forEachIndexed { index, l ->
|
val toTime = l.toTime("MM/dd")
|
val day = if (toTime.startsWith("0")) toTime.substring(1) else toTime
|
val week = if (l.toTime("yyyy-MM-dd") == System.currentTimeMillis().toTime("yyyy-MM-dd")) "今天"
|
else l.toWeek("周")
|
(rg_day.get(index) as TextView).text = "${day}\n$week"
|
}
|
}
|
|
override fun onRefresh() {
|
getData()
|
}
|
|
override fun onLoadMore() {
|
}
|
|
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
super.onActivityResult(requestCode, resultCode, data)
|
if (resultCode == Activity.RESULT_OK){ //下单成功
|
setResult(Activity.RESULT_OK)
|
finish()
|
}
|
}
|
|
override fun onCalendarInterceptClick(calendar: Calendar?, isClick: Boolean) {
|
}
|
|
override fun onCalendarIntercept(calendar: Calendar): Boolean {
|
return calendar.timeInMillis.toTime("yyyy-MM-dd") < System.currentTimeMillis().toTime("yyyy-MM-dd")
|
}
|
}
|