package com.dollearn.student.dialog
|
|
import android.view.Gravity
|
import androidx.recyclerview.widget.LinearLayoutManager
|
import cn.sinata.xldutils.activity.BaseActivity
|
import cn.sinata.xldutils.gone
|
import cn.sinata.xldutils.utils.myToast
|
import cn.sinata.xldutils.visible
|
import com.dollearn.student.R
|
import com.dollearn.student.WeparkApplication
|
import com.dollearn.student.network.HttpManager
|
import com.dollearn.student.network.entity.CommonData
|
import com.dollearn.student.network.request
|
import com.dollearn.student.ui.home.adapter.StringAdapter
|
import com.dollearn.student.utils.Const
|
import com.dollearn.student.utils.event.EmptyEvent
|
import com.dollearn.student.utils.extention.clickDelay
|
import com.dollearn.student.utils.interfaces.StringCallback
|
import kotlinx.android.synthetic.main.dialog_shop_choose.*
|
import org.greenrobot.eventbus.EventBus
|
|
class ChooseShopDialog : BaseDialogFragment() {
|
var stringCallback: StringCallback? = null
|
override fun setContentView() = R.layout.dialog_shop_choose
|
|
private var provinceCode = ""
|
private var cityCode = ""
|
private var shopId = ""
|
private var shopName = ""
|
private val cities = arrayListOf<CommonData>()
|
private val cityStrings = arrayListOf<String>()
|
private val cityAdapter = StringAdapter(cityStrings)
|
|
private val shops = arrayListOf<CommonData>()
|
private val shopStrings = arrayListOf<String>()
|
private val shopAdapter = StringAdapter(shopStrings)
|
|
private fun getscoreshopUse(): Boolean {
|
if (arguments == null) return false
|
else
|
return arguments?.getBoolean("scoreshopUse", false) as Boolean
|
|
|
}
|
|
|
override fun setGravity() = Gravity.CENTER
|
|
override fun initView() {
|
tv_province.text = WeparkApplication.province
|
provinceCode = WeparkApplication.provinceCode
|
tv_city.text = WeparkApplication.cityName
|
cityCode = WeparkApplication.cityCode
|
|
if (!getscoreshopUse()) {
|
shopId = WeparkApplication.storeId
|
tv_shop.text = WeparkApplication.store
|
}
|
tv_cancel.setOnClickListener { dismissAllowingStateLoss() }
|
tv_action.clickDelay {
|
if (shopId.isEmpty() && !getscoreshopUse())
|
myToast("请选择门店")
|
else {
|
if (getscoreshopUse()) {
|
|
stringCallback?.onResult(
|
if (shopId.isEmpty() && shopName.isEmpty())
|
"" else "$shopId-*-*$shopName"
|
)
|
} else {
|
WeparkApplication.province = tv_province.text.toString()
|
WeparkApplication.provinceCode = provinceCode
|
WeparkApplication.cityName = tv_city.text.toString()
|
WeparkApplication.cityCode = cityCode
|
WeparkApplication.store = tv_shop.text.toString()
|
WeparkApplication.storeId = shopId
|
EventBus.getDefault().post(EmptyEvent(Const.EventCode.CHANGE_SHOP))
|
}
|
|
dismissAllowingStateLoss()
|
}
|
}
|
getProvince()
|
tv_province.clickDelay {
|
bg.callOnClick()
|
rv_province.visible()
|
}
|
tv_city.clickDelay {
|
bg.callOnClick()
|
getCity()
|
}
|
tv_shop.clickDelay {
|
bg.callOnClick()
|
getShop()
|
}
|
bg.clickDelay {
|
rv_province.gone()
|
rv_city.gone()
|
rv_shop.gone()
|
}
|
rv_city.layoutManager = LinearLayoutManager(requireContext())
|
rv_city.adapter = cityAdapter
|
cityAdapter.setOnItemClickListener { view, position ->
|
cityCode = cities[position].code
|
tv_city.text = cities[position].name
|
tv_shop.text = ""
|
shopId = ""
|
rv_city.gone()
|
}
|
rv_shop.layoutManager = LinearLayoutManager(requireContext())
|
rv_shop.adapter = shopAdapter
|
shopAdapter.setOnItemClickListener { view, position ->
|
if (getscoreshopUse() && position == 0) {
|
shopId = ""
|
tv_shop.text = "全部门店"
|
shopName = ""
|
} else {
|
shopId = shops[position].id.toString()
|
tv_shop.text = shops[position].name
|
shopName = shops[position].name
|
}
|
|
rv_shop.gone()
|
}
|
}
|
|
private fun getProvince() {
|
HttpManager.queryProvinceAndCity(null)
|
.request(requireActivity() as BaseActivity) { _, data ->
|
if (!isAdded)
|
return@request
|
rv_province.layoutManager = LinearLayoutManager(requireContext())
|
val list = arrayListOf<String>()
|
list.addAll((data ?: arrayListOf()).map { it.name })
|
val stringAdapter = StringAdapter(list)
|
rv_province.adapter = stringAdapter
|
stringAdapter.setOnItemClickListener { view, position ->
|
provinceCode = data!![position].code
|
tv_province.text = data[position].name
|
tv_city.text = ""
|
cityCode = ""
|
tv_shop.text = ""
|
shopId = ""
|
rv_province.gone()
|
}
|
}
|
}
|
|
private fun getCity() {
|
if (provinceCode.isEmpty()) {
|
myToast("请选择省")
|
return
|
}
|
HttpManager.queryProvinceAndCity(provinceCode)
|
.request(requireActivity() as BaseActivity) { _, data ->
|
cities.clear()
|
cityStrings.clear()
|
cities.addAll(data ?: arrayListOf())
|
cityStrings.addAll((cities.map { it.name }))
|
cityAdapter.notifyDataSetChanged()
|
rv_city.visible()
|
}
|
}
|
|
private fun getShop() {
|
if (cityCode.isEmpty()&&provinceCode.isEmpty()) {
|
myToast("请选择所在城市")
|
return
|
}
|
HttpManager.queryStoreByCityCode(cityCode,provinceCode)
|
.request(requireActivity() as BaseActivity) { _, data ->
|
shops.clear()
|
shopStrings.clear()
|
shops.addAll(data ?: arrayListOf())
|
shopStrings.addAll((shops.map { it.name }))
|
if (getscoreshopUse()) {
|
shops.add(0, CommonData())
|
shopStrings.add(0, "全部门店")
|
}
|
shopAdapter.notifyDataSetChanged()
|
rv_shop.visible()
|
}
|
}
|
}
|