package com.xw.yunwei.ui.work.car.detail.operations.maintain
|
|
import android.app.Application
|
import android.view.View
|
import androidx.core.os.bundleOf
|
import androidx.lifecycle.MutableLiveData
|
import com.blankj.utilcode.util.GsonUtils
|
import com.xw.common.base.BaseViewModel
|
import com.xw.common.base.FileSelectBean
|
import com.xw.common.base.ImageEventListener
|
import com.xw.common.base.ImageSelectAdapter
|
import com.xw.common.utils.ToastUtilCommon
|
import com.xw.yunwei.R
|
import com.xw.yunwei.model.CarModel
|
import com.xw.yunwei.model.MaintainRecordModel
|
import com.xw.yunwei.net.CommonRepository
|
import com.xw.yunwei.net.WorkRepository
|
import com.xw.yunwei.ui.work.car.detail.StandardDescriptionActivity
|
import okhttp3.MediaType.Companion.toMediaType
|
import okhttp3.MultipartBody
|
import okhttp3.RequestBody.Companion.asRequestBody
|
import org.koin.core.component.inject
|
import java.io.File
|
import java.math.BigDecimal
|
import kotlin.getValue
|
|
class MaintainCarVM(application: Application) : BaseViewModel(application) {
|
|
val commonRepository: CommonRepository by inject()
|
val workRepository: WorkRepository by inject()
|
lateinit var requestModel: MaintainRecordModel
|
|
var taskId = -1L
|
var carId = 0L
|
val carInfo: MutableLiveData<CarModel> = MutableLiveData()
|
|
val adaptersName = listOf("大灯情况", "转向灯情况", "刹车灯情况", "雾灯情况", "舱内清洁及消毒")
|
val adapters = mutableListOf<ImageSelectAdapter>()
|
val imageEvents = mutableListOf<ImageEventListener<FileSelectBean>>()
|
val maxSizes = listOf(2, 2, 2, 2, 2) // 先默认每个都是最大9张
|
var operateIndex = -1
|
|
val lt = MutableLiveData("2.5")
|
val lb = MutableLiveData("2.5")
|
val rt = MutableLiveData("2.5")
|
val rb = MutableLiveData("2.5")
|
|
val onClick = View.OnClickListener {
|
when (it.id) {
|
R.id.ltc -> lt.cut()
|
R.id.lta -> lt.add()
|
R.id.lbc -> lb.cut()
|
R.id.lba -> lb.add()
|
R.id.rtc -> rt.cut()
|
R.id.rta -> rt.add()
|
R.id.rbc -> rb.cut()
|
R.id.rba -> rb.add()
|
R.id.viewDetail -> startActivity(
|
StandardDescriptionActivity::class.java,
|
bundleOf("type" to 1)
|
)
|
R.id.viewDetail1 -> startActivity(
|
StandardDescriptionActivity::class.java,
|
bundleOf("type" to 2)
|
)
|
R.id.viewDetail2 -> startActivity(
|
StandardDescriptionActivity::class.java,
|
bundleOf("type" to 4)
|
)
|
R.id.submit-> submit()
|
}
|
}
|
|
fun queryInfo() {
|
launchRequest {
|
workRepository.queryCarInfo(carId)?.let {
|
carInfo.postValue(it)
|
}
|
}
|
}
|
|
fun submit() {
|
adapters.forEachIndexed { index, adapter ->
|
if (adapter.data.isEmpty()) {
|
ToastUtilCommon.showError("请上传${adaptersName[index]}照片")
|
return
|
}
|
}
|
|
val files = mutableListOf<FileSelectBean>()
|
adapters.forEach { files.addAll(it.data) }
|
|
showDialog("上传中...")
|
uploadFile(files) {
|
dismissDialog()
|
requestModel.headLight = "${adapters[0].data.map { it.url }}"
|
requestModel.turnSignal = "${adapters[1].data.map { it.url }}"
|
requestModel.brakeLight = "${adapters[2].data.map { it.url }}"
|
requestModel.fogLight = "${adapters[3].data.map { it.url }}"
|
requestModel.cabinCleaning = "${adapters[4].data.map { it.url }}"
|
|
if (taskId != -1L) {
|
requestModel.taskId = taskId
|
}
|
launchRequest(tips = "提交中...") {
|
workRepository.savePreparation(requestModel)
|
ToastUtilCommon.showSuc("整备结果提交成功")
|
finish()
|
}
|
}
|
}
|
|
private fun uploadFile(files: List<FileSelectBean>, succ: () -> Unit) {
|
val result = files.find { it.url.isEmpty() }
|
if (result == null) {
|
succ()
|
} else {
|
launchRequest(showLoading = false, error = { _, errMsg ->
|
ToastUtilCommon.showError(errMsg)
|
dismissDialog()
|
}) {
|
val file = File(result.localPath)
|
val fileRequestBody = file.asRequestBody("image/jpg".toMediaType())
|
val mBuilder = MultipartBody.Builder()
|
mBuilder.addFormDataPart("file", file.name, fileRequestBody)
|
mBuilder.setType(MultipartBody.FORM)
|
val data = commonRepository.uploadFile(mBuilder.build())
|
result.url = GsonUtils.toJson(data)
|
uploadFile(files, succ)
|
}
|
}
|
}
|
|
fun MutableLiveData<String>.cut() {
|
val current = value?.toBigDecimal() ?: BigDecimal.ZERO
|
if (current <= BigDecimal.valueOf(1.5)) {
|
ToastUtilCommon.show("不能再减了")
|
} else {
|
value = current.subtract(BigDecimal("0.1")).toString()
|
}
|
}
|
|
fun MutableLiveData<String>.add() {
|
val current = value?.toBigDecimal() ?: BigDecimal.ZERO
|
if (current >= BigDecimal.valueOf(3.5)) {
|
ToastUtilCommon.show("不能再加了")
|
} else {
|
value = current.add(BigDecimal("0.1")).toString()
|
}
|
}
|
|
}
|