|
@@ -3,6 +3,7 @@ package com.iscs.bozzys.ui.pages.vm
|
|
|
import androidx.lifecycle.viewModelScope
|
|
import androidx.lifecycle.viewModelScope
|
|
|
import com.iscs.bozzys.api.ApiRequest
|
|
import com.iscs.bozzys.api.ApiRequest
|
|
|
import com.iscs.bozzys.api.ApiRequest.getResponse
|
|
import com.iscs.bozzys.api.ApiRequest.getResponse
|
|
|
|
|
+import com.iscs.bozzys.api.Attachment
|
|
|
import com.iscs.bozzys.api.FormField
|
|
import com.iscs.bozzys.api.FormField
|
|
|
import com.iscs.bozzys.api.Node
|
|
import com.iscs.bozzys.api.Node
|
|
|
import com.iscs.bozzys.api.Task
|
|
import com.iscs.bozzys.api.Task
|
|
@@ -12,6 +13,7 @@ import com.iscs.bozzys.event.RefreshEventBus
|
|
|
import com.iscs.bozzys.ui.common.VMBase
|
|
import com.iscs.bozzys.ui.common.VMBase
|
|
|
import com.iscs.bozzys.ui.pages.compose.checkCanCommitReturnTips
|
|
import com.iscs.bozzys.ui.pages.compose.checkCanCommitReturnTips
|
|
|
import com.iscs.bozzys.ui.pages.compose.getFormListByJsonList
|
|
import com.iscs.bozzys.ui.pages.compose.getFormListByJsonList
|
|
|
|
|
+import com.iscs.bozzys.utils.SystemUtil
|
|
|
import kotlinx.coroutines.delay
|
|
import kotlinx.coroutines.delay
|
|
|
import kotlinx.coroutines.flow.MutableStateFlow
|
|
import kotlinx.coroutines.flow.MutableStateFlow
|
|
|
import kotlinx.coroutines.flow.asStateFlow
|
|
import kotlinx.coroutines.flow.asStateFlow
|
|
@@ -36,6 +38,11 @@ class VMDetailTask : VMBase() {
|
|
|
// 任务表单信息
|
|
// 任务表单信息
|
|
|
private lateinit var formInfo: TaskFormInfo
|
|
private lateinit var formInfo: TaskFormInfo
|
|
|
|
|
|
|
|
|
|
+ private val mbForms = listOf(
|
|
|
|
|
+ "{\"id\":\"field_1770613077797\",\"type\":\"input\",\"label\":\"盲板设备编号\",\"name\":\"deviceNumber\",\"required\":false,\"placeholder\":\"请输入盲板设备编号\",\"options\":[]}",
|
|
|
|
|
+ "{\"id\":\"field_1770613171131\",\"type\":\"upload\",\"label\":\"附件上传\",\"name\":\"attachments\",\"required\":false,\"placeholder\":\"\",\"options\":[],\"uploadType\":\"file\",\"maxCount\":5}"
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 获取任务表单信息
|
|
* 获取任务表单信息
|
|
|
*/
|
|
*/
|
|
@@ -50,6 +57,20 @@ class VMDetailTask : VMBase() {
|
|
|
toast.emit("任务数据异常")
|
|
toast.emit("任务数据异常")
|
|
|
return@launch
|
|
return@launch
|
|
|
}
|
|
}
|
|
|
|
|
+ // 盲板操作需要显示表单
|
|
|
|
|
+ if (listOf("0", "2").contains(taskInfo.isolationType)) {
|
|
|
|
|
+ val forms = mbForms.getFormListByJsonList()
|
|
|
|
|
+ forms.forEach { form ->
|
|
|
|
|
+ if (form.name == "attachments") {
|
|
|
|
|
+ val json = Json
|
|
|
|
|
+ val list = json.decodeFromString<List<Attachment>>(taskInfo.attachments ?: "[]")
|
|
|
|
|
+ form.value = list.map { a -> a.url }
|
|
|
|
|
+ } else if (form.name == "deviceNumber") {
|
|
|
|
|
+ form.value = listOf(taskInfo.deviceNumber ?: "")
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ _state.value = _state.value.copy(mbForms = forms)
|
|
|
|
|
+ }
|
|
|
// 兼容它端返回的异样数据格式
|
|
// 兼容它端返回的异样数据格式
|
|
|
if (!taskInfo.formData.isNullOrEmpty()) {
|
|
if (!taskInfo.formData.isNullOrEmpty()) {
|
|
|
val json = Json { ignoreUnknownKeys = true }
|
|
val json = Json { ignoreUnknownKeys = true }
|
|
@@ -100,6 +121,22 @@ class VMDetailTask : VMBase() {
|
|
|
val fields = forms.map { json.encodeToString(it) }
|
|
val fields = forms.map { json.encodeToString(it) }
|
|
|
val formInfo = this@VMDetailTask.formInfo.copy(fields = fields)
|
|
val formInfo = this@VMDetailTask.formInfo.copy(fields = fields)
|
|
|
params["formData"] = json.encodeToString(formInfo)
|
|
params["formData"] = json.encodeToString(formInfo)
|
|
|
|
|
+ // 处理特殊盲板操作数据
|
|
|
|
|
+ if (listOf("0", "2").contains(_state.value.node.isolationType)) {
|
|
|
|
|
+ // 这里做数据转换操作
|
|
|
|
|
+ _state.value.mbForms.forEach { form ->
|
|
|
|
|
+ if (form.name == "attachments") {
|
|
|
|
|
+ val list = arrayListOf<MutableMap<String, String>>()
|
|
|
|
|
+ form.value.forEach { url ->
|
|
|
|
|
+ val name = SystemUtil.getUrlFileName(url)
|
|
|
|
|
+ list += mutableMapOf("name" to name, "url" to url)
|
|
|
|
|
+ }
|
|
|
|
|
+ params["attachments"] = json.encodeToString(list)
|
|
|
|
|
+ } else if (form.name == "deviceNumber") {
|
|
|
|
|
+ params["deviceNumber"] = form.value.getOrNull(0) ?: ""
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
loading.emit(StateLoading(show = true))
|
|
loading.emit(StateLoading(show = true))
|
|
|
ApiRequest.updateJobNodeApproval(params).onSuccess {
|
|
ApiRequest.updateJobNodeApproval(params).onSuccess {
|
|
|
delay(1000)
|
|
delay(1000)
|
|
@@ -120,5 +157,13 @@ class VMDetailTask : VMBase() {
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 页面状态类
|
|
* 页面状态类
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param forms 自定义表单数据
|
|
|
|
|
+ * @param mbForms 盲板表单数据
|
|
|
|
|
+ * @param node 当前节点数据
|
|
|
*/
|
|
*/
|
|
|
-data class StateDetailTask(val forms: List<FormField> = listOf(), val node: Node = Node())
|
|
|
|
|
|
|
+data class StateDetailTask(
|
|
|
|
|
+ val forms: List<FormField> = listOf(),
|
|
|
|
|
+ val mbForms: List<FormField> = listOf(),
|
|
|
|
|
+ val node: Node = Node()
|
|
|
|
|
+)
|