From 804db17db811558fbcfcb1394306daca2672ce3a Mon Sep 17 00:00:00 2001
From: songzhiling <17630035658@163.com>
Date: Wed, 14 May 2025 09:39:33 +0800
Subject: [PATCH] =?UTF-8?q?feat(servicing):=20=E6=9B=B4=E6=96=B0=E8=AE=A2?=
=?UTF-8?q?=E5=8D=95=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD=E5=92=8C=E7=95=8C?=
=?UTF-8?q?=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 添加推送服务以支持消息推送
- 优化电子签名功能,修复相关问题
- 更新订单状态处理逻辑
-重构部分代码以提高可维护性
- 调整界面样式,优化用户体验
---
.../main/java/com/za/sdk/demo/MainActivity.kt | 2 +-
servicing/build.gradle | 2 +-
servicing/src/main/AndroidManifest.xml | 6 +
.../com/za/bean/db/order/PhotoTemplateInfo.kt | 1 +
.../src/main/java/com/za/room/RoomHelper.kt | 2 +-
.../com/za/signature/GridPaintActivity.java | 4 +-
.../com/za/signature/util/BitmapUtil.java | 7 +-
.../java/com/za/ui/new_order/NewOrderVm.kt | 3 +-
.../ui/order_report/ReportFloatingManager.kt | 2 +-
.../com/za/ui/servicing/ele_sign/EleSignVm.kt | 280 ++++-----
.../go_accident/GoAccidentSiteActivity.kt | 5 +-
.../servicing/go_accident/GoAccidentSiteVm.kt | 4 +-
.../GoToDestinationActivity.kt | 5 +-
.../go_to_destination/GoToDestinationVm.kt | 4 +-
.../OrderDetailItemScreen.kt | 458 +++++++++-----
.../in_servicing_setting/OrderDetailScreen.kt | 132 ++--
.../OrderRequirementsScreen.kt | 164 ++---
.../InServicePeopleConfirmActivity.kt | 2 +-
.../ServicePeopleConfirmScreen.kt | 12 +-
.../servicing/order_confirm/ConfirmEleVm.kt | 11 +-
.../servicing/order_give_up/OrderGiveUpVm.kt | 593 +++++++++---------
.../servicing/view/InServicingBottomView.kt | 76 ++-
.../wait_to_start/WaitToStartActivity.kt | 11 +-
.../servicing/wait_to_start/WaitToStartVm.kt | 29 +-
.../src/main/res/drawable/sv_customer.xml | 30 +
.../src/main/res/drawable/sv_map_dist.xml | 15 +
.../src/main/res/drawable/sv_navigation.xml | 33 +-
.../src/main/res/drawable/sv_order_report.xml | 48 ++
.../main/res/drawable/sv_service_phone.xml | 36 ++
.../layout-land/sign_activity_grid_paint.xml | 3 +-
.../main/res/layout/floating_view_layout.xml | 2 +-
.../res/layout/sign_activity_grid_paint.xml | 10 +-
servicing/src/main/res/values/colors.xml | 2 +-
33 files changed, 1185 insertions(+), 809 deletions(-)
create mode 100644 servicing/src/main/res/drawable/sv_customer.xml
create mode 100644 servicing/src/main/res/drawable/sv_map_dist.xml
create mode 100644 servicing/src/main/res/drawable/sv_order_report.xml
create mode 100644 servicing/src/main/res/drawable/sv_service_phone.xml
diff --git a/app/src/main/java/com/za/sdk/demo/MainActivity.kt b/app/src/main/java/com/za/sdk/demo/MainActivity.kt
index 9389713..f4cc486 100644
--- a/app/src/main/java/com/za/sdk/demo/MainActivity.kt
+++ b/app/src/main/java/com/za/sdk/demo/MainActivity.kt
@@ -27,7 +27,7 @@ class MainActivity : ComponentActivity() {
.fillMaxSize()
.clickable {
val uri =
- "zd.assist://app?taskCode=ZD250429100095&driverName=宋志领&driverPhone=17630035658&rescueVehicle=沪88888".toUri()
+ "zd.assist://app?taskCode=ZD250512100030&driverName=宋志领&driverPhone=17630035658&rescueVehicle=沪88888".toUri()
val intent = Intent(Intent.ACTION_VIEW, uri)
startActivity(intent)
}
diff --git a/servicing/build.gradle b/servicing/build.gradle
index 9c3b1de..ceef4fc 100644
--- a/servicing/build.gradle
+++ b/servicing/build.gradle
@@ -73,7 +73,7 @@ publishing {
release(MavenPublication) {
groupId = 'io.github.szl9'
artifactId = 'zd_servicing'
- version = "1.0.1.9.9.57"
+ version = "1.0.1.9.9.63"
pom {
packaging = "aar"
diff --git a/servicing/src/main/AndroidManifest.xml b/servicing/src/main/AndroidManifest.xml
index a0f1d51..37f85ef 100644
--- a/servicing/src/main/AndroidManifest.xml
+++ b/servicing/src/main/AndroidManifest.xml
@@ -197,6 +197,12 @@
android:exported="false"
android:theme="@style/Theme.Dealer" />
+
+
+
() {
if (jpushBean?.distLat != null && jpushBean.distLat != 0.0 && jpushBean.distLng != null && jpushBean.distLng != 0.0) {
val startMarkers = MarkerOptions()
- .icon(BitmapDescriptorFactory.fromResource(R.mipmap.sv_dist_map))
+ .icon(ImageUtil.vectorToBitmap(ActivityUtils.getTopActivity(), R.drawable.sv_map_dist))
.position(LatLng(jpushBean.distLat, jpushBean.distLng))
.title(jpushBean.distAddress)
.snippet("目的地")
diff --git a/servicing/src/main/java/com/za/ui/order_report/ReportFloatingManager.kt b/servicing/src/main/java/com/za/ui/order_report/ReportFloatingManager.kt
index 15be03c..8fe0c21 100644
--- a/servicing/src/main/java/com/za/ui/order_report/ReportFloatingManager.kt
+++ b/servicing/src/main/java/com/za/ui/order_report/ReportFloatingManager.kt
@@ -100,7 +100,7 @@ class ReportFloatingManager : Service() {
// 设置应用图标
floatingView?.findViewById(R.id.floating_image)
- ?.setImageResource(R.mipmap.ic_customer)
+ ?.setImageResource(R.drawable.sv_order_report)
windowManager?.addView(floatingView, params)
animateWindowAppear()
diff --git a/servicing/src/main/java/com/za/ui/servicing/ele_sign/EleSignVm.kt b/servicing/src/main/java/com/za/ui/servicing/ele_sign/EleSignVm.kt
index 1532d4a..389c937 100644
--- a/servicing/src/main/java/com/za/ui/servicing/ele_sign/EleSignVm.kt
+++ b/servicing/src/main/java/com/za/ui/servicing/ele_sign/EleSignVm.kt
@@ -22,164 +22,158 @@ import kotlinx.coroutines.flow.MutableStateFlow
import java.io.File
class EleSignVm : IServicingVm() {
- private val _uiState = MutableStateFlow(UiState())
- val uiState get() = _uiState
- override fun updateState(uiState: UiState) {
- _uiState.value = uiState
- }
+ private val _uiState = MutableStateFlow(UiState())
+ val uiState get() = _uiState
+ override fun updateState(uiState : UiState) {
+ _uiState.value = uiState
+ }
- override fun dispatch(action: Action) {
- when (action) {
- is Action.Init -> init()
- is Action.UpdateState -> updateState(action.uiState)
- is Action.Upload -> upload()
- is Action.UploadSignature -> uploadSignature(action.path)
- is Action.UploadOffline -> uploadOffline()
- }
- }
+ override fun dispatch(action : Action) {
+ when (action) {
+ is Action.Init -> init()
+ is Action.UpdateState -> updateState(action.uiState)
+ is Action.Upload -> upload()
+ is Action.UploadSignature -> uploadSignature(action.path)
+ is Action.UploadOffline -> uploadOffline()
+ }
+ }
- private fun uploadOffline() {
- val eleWorkOrderBean = RoomHelper.db?.eleWorkOrderDao()?.getEleWorkOrder(getCurrentOrder()?.taskId
- ?: 0)
- if (eleWorkOrderBean == null) {
- ToastUtils.showLong("数据获取失败,请返回首页重试!")
- return
- }
+ private fun uploadOffline() {
+ val eleWorkOrderBean =
+ RoomHelper.db?.eleWorkOrderDao()?.getEleWorkOrder(getCurrentOrder()?.taskId ?: 0)
+ if (eleWorkOrderBean == null) {
+ ToastUtils.showLong("数据获取失败,请返回首页重试!")
+ return
+ }
- if (uiState.value.eleWorkOrderBean?.serverCustomSignPath.isNullOrBlank()) {
- val signOfflineUpdateTaskBean = OfflineUpdateTaskBean(
- imageLocalPath = uiState.value.eleWorkOrderBean?.localCustomSignPath,
- taskId = getCurrentOrder()?.taskId,
- taskCode = getCurrentOrder()?.taskCode,
- offlineTitle = "电子工单-客户签名照片",
- offlineType = 5
- )
- insertOfflineTask(signOfflineUpdateTaskBean)
- }
+ if (uiState.value.eleWorkOrderBean?.serverCustomSignPath.isNullOrBlank()) {
+ val signOfflineUpdateTaskBean =
+ OfflineUpdateTaskBean(imageLocalPath = uiState.value.eleWorkOrderBean?.localCustomSignPath,
+ taskId = getCurrentOrder()?.taskId,
+ taskCode = getCurrentOrder()?.taskCode,
+ offlineTitle = "电子工单-客户签名照片",
+ offlineType = 5)
+ insertOfflineTask(signOfflineUpdateTaskBean)
+ }
- val offlineUpdateTaskBean = OfflineUpdateTaskBean(
- taskId = getCurrentOrder()?.taskId,
- taskCode = getCurrentOrder()?.taskCode,
- customerSignPath = uiState.value.eleWorkOrderBean?.serverCustomSignPath,
- offlineTitle = "电子工单-车况检查表",
- offlineType = 3,
- eleState = 2,
- userOrderId = getCurrentOrder()?.userOrderId
- )
- insertOfflineTask(offlineUpdateTaskBean)
- updateCurrentEleWorkOrder(eleWorkOrderBean.copy(orderWorkStatus = 2))
- updateState(uiState.value.copy(goNextPage = UpdateTaskBean(getCurrentOrder()?.taskState), orderInfo = getCurrentOrder()))
- }
+ val offlineUpdateTaskBean = OfflineUpdateTaskBean(taskId = getCurrentOrder()?.taskId,
+ taskCode = getCurrentOrder()?.taskCode,
+ customerSignPath = uiState.value.eleWorkOrderBean?.serverCustomSignPath,
+ offlineTitle = "电子工单-车况检查表",
+ offlineType = 3,
+ eleState = 2,
+ userOrderId = getCurrentOrder()?.userOrderId)
+ insertOfflineTask(offlineUpdateTaskBean)
+ updateCurrentEleWorkOrder(eleWorkOrderBean.copy(orderWorkStatus = 2))
+ updateState(uiState.value.copy(goNextPage = UpdateTaskBean(getCurrentOrder()?.taskState),
+ orderInfo = getCurrentOrder()))
+ }
- private fun uploadSignature(path: String) {
- LoadingManager.showLoading()
- val eleWorkOrderBean = uiState.value.eleWorkOrderBean?.copy(localCustomSignPath = path)
- if (eleWorkOrderBean != null) {
- RoomHelper.db?.eleWorkOrderDao()?.update(eleWorkOrderBean)
- updateState(uiState.value.copy(eleWorkOrderBean = eleWorkOrderBean))
- LogUtil.print("uploadSignature success", eleWorkOrderBean.toJson() ?: "")
- }
- CommonMethod.uploadImage(File(path),
- success = {
- LoadingManager.hideLoading()
- if (eleWorkOrderBean != null) {
- val temp = eleWorkOrderBean.copy(serverCustomSignPath = it)
- RoomHelper.db?.eleWorkOrderDao()?.update(temp)
- updateState(uiState.value.copy(eleWorkOrderBean = temp))
- LogUtil.print("uploadSignature success", temp.toJson() ?: "")
- }
- },
- failed = {
- LoadingManager.hideLoading()
- LogUtil.print("uploadSignature", "failed==$it")
- })
- }
+ private fun uploadSignature(path : String) {
+ LoadingManager.showLoading()
+ val eleWorkOrderBean = uiState.value.eleWorkOrderBean?.copy(localCustomSignPath = path)
+ if (eleWorkOrderBean != null) {
+ RoomHelper.db?.eleWorkOrderDao()?.update(eleWorkOrderBean)
+ updateState(uiState.value.copy(eleWorkOrderBean = eleWorkOrderBean))
+ LogUtil.print("uploadSignature success", eleWorkOrderBean.toJson() ?: "")
+ }
+ CommonMethod.uploadImage(File(path), success = {
+ LoadingManager.hideLoading()
+ if (eleWorkOrderBean != null) {
+ val temp = eleWorkOrderBean.copy(serverCustomSignPath = it)
+ RoomHelper.db?.eleWorkOrderDao()?.update(temp)
+ updateState(uiState.value.copy(eleWorkOrderBean = temp))
+ LogUtil.print("uploadSignature success", temp.toJson() ?: "")
+ }
+ }, failed = {
+ LoadingManager.hideLoading()
+ LogUtil.print("uploadSignature", "failed==$it")
+ })
+ }
- private fun upload() {
- val eleWorkOrderBean = RoomHelper.db?.eleWorkOrderDao()?.getEleWorkOrder(getCurrentOrder()?.taskId
- ?: 0)
- if (eleWorkOrderBean == null) {
- ToastUtils.showLong("数据获取失败,请返回首页重试!")
- return
- }
+ private fun upload() {
+ val eleWorkOrderBean =
+ RoomHelper.db?.eleWorkOrderDao()?.getEleWorkOrder(getCurrentOrder()?.taskId ?: 0)
+ if (eleWorkOrderBean == null) {
+ ToastUtils.showLong("数据获取失败,请返回首页重试!")
+ return
+ }
- if (uiState.value.eleWorkOrderBean?.localCustomSignPath.isNullOrBlank()) {
- ToastUtils.showLong("签名照不能为空!!")
- return
- }
+ if (uiState.value.eleWorkOrderBean?.localCustomSignPath.isNullOrBlank()) {
+ ToastUtils.showLong("签名照不能为空!!")
+ return
+ }
- if (getCurrentOrderOfflineTask() != null) {
- uploadOffline()
- return
- }
+ if (! getCurrentOrderOfflineTask().isNullOrEmpty()) {
+ uploadOffline()
+ return
+ }
- if (!uiState.value.eleWorkOrderBean?.localCustomSignPath.isNullOrBlank() && uiState.value.eleWorkOrderBean?.serverCustomSignPath.isNullOrBlank()) {
- updateState(uiState.value.copy(showOfflineDialog = true))
- return
- }
+ if (! uiState.value.eleWorkOrderBean?.localCustomSignPath.isNullOrBlank() && uiState.value.eleWorkOrderBean?.serverCustomSignPath.isNullOrBlank()) {
+ showTipDialog("请先上传签名!")
+ return
+ }
- val saveEleOrderRequest = SaveEleOrderRequest(
- state = 2,
- userOrderId = getCurrentOrder()?.userOrderId,
- taskOrderId = getCurrentOrder()?.taskId,
- customerSignPath = uiState.value.eleWorkOrderBean?.serverCustomSignPath
- )
+ val saveEleOrderRequest = SaveEleOrderRequest(state = 2,
+ userOrderId = getCurrentOrder()?.userOrderId,
+ taskOrderId = getCurrentOrder()?.taskId,
+ customerSignPath = uiState.value.eleWorkOrderBean?.serverCustomSignPath)
- LoadingManager.showLoading()
- RetrofitHelper.getDefaultService().saveElectronOrder(saveEleOrderRequest)
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(object : BaseObserver() {
- override fun doSuccess(it: String?) {
- LoadingManager.hideLoading()
- updateCurrentEleWorkOrder(eleWorkOrderBean.copy(orderWorkStatus = 2))
- updateState(uiState.value.copy(goNextPage = UpdateTaskBean(getCurrentOrder()?.taskState), orderInfo = getCurrentOrder()))
- }
+ LoadingManager.showLoading()
+ RetrofitHelper.getDefaultService().saveElectronOrder(saveEleOrderRequest)
+ .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
+ .subscribe(object : BaseObserver() {
+ override fun doSuccess(it : String?) {
+ LoadingManager.hideLoading()
+ updateCurrentEleWorkOrder(eleWorkOrderBean.copy(orderWorkStatus = 2))
+ updateState(uiState.value.copy(goNextPage = UpdateTaskBean(getCurrentOrder()?.taskState),
+ orderInfo = getCurrentOrder()))
+ }
- override fun doFailure(code: Int, msg: String?) {
- LoadingManager.hideLoading()
- ToastUtils.showShort(msg)
- if (code == Const.NetWorkException) {
- updateState(uiState.value.copy(showOfflineDialog = true))
- }
- LogUtil.print("eleSign upload failed", msg ?: "")
- }
- })
- }
+ override fun doFailure(code : Int, msg : String?) {
+ LoadingManager.hideLoading()
+ ToastUtils.showShort(msg)
+ if (code == Const.NetWorkException) {
+ updateState(uiState.value.copy(showOfflineDialog = true))
+ }
+ LogUtil.print("eleSign upload failed", msg ?: "")
+ }
+ })
+ }
- private fun init() {
- LoadingManager.showLoading()
- CommonMethod.queryElectronOrder(getCurrentOrder(),
- success = {
- LoadingManager.hideLoading()
- val photoList = RoomHelper.db?.eleCarDamagePhotoDao()?.getEleCarDamagePhotos(getCurrentOrder()?.taskId
- ?: 0)
- updateState(uiState.value.copy(eleWorkOrderBean = it, damagePhoto = photoList, orderInfo = getCurrentOrder()))
- LogUtil.print("电子表单更新车辆损伤照片", "eleWorkOrderBean==${it.toJson()}")
- },
- failed = {
- LoadingManager.hideLoading()
- ToastUtils.showShort("数据加载异常,请返回重试!")
- })
- }
+ private fun init() {
+ LoadingManager.showLoading()
+ CommonMethod.queryElectronOrder(getCurrentOrder(), success = {
+ LoadingManager.hideLoading()
+ val photoList = RoomHelper.db?.eleCarDamagePhotoDao()
+ ?.getEleCarDamagePhotos(getCurrentOrder()?.taskId ?: 0)
+ updateState(uiState.value.copy(eleWorkOrderBean = it,
+ damagePhoto = photoList,
+ orderInfo = getCurrentOrder()))
+ LogUtil.print("电子表单更新车辆损伤照片", "eleWorkOrderBean==${it.toJson()}")
+ }, failed = {
+ LoadingManager.hideLoading()
+ ToastUtils.showShort("数据加载异常,请返回重试!")
+ })
+ }
- sealed class Action {
- data object Init : Action()
- data class UpdateState(val uiState: UiState) : Action()
- data object Upload : Action()
- data object UploadOffline : Action()
- data class UploadSignature(val path: String) : Action()
- }
+ sealed class Action {
+ data object Init : Action()
+ data class UpdateState(val uiState : UiState) : Action()
+ data object Upload : Action()
+ data object UploadOffline : Action()
+ data class UploadSignature(val path : String) : Action()
+ }
- data class UiState(
- val orderInfo: OrderInfo? = null,
- val eleWorkOrderBean: EleWorkOrderBean? = null,
- val goNextPage: UpdateTaskBean? = null,
- val isGoNextPageDialog: Boolean? = null,
- val showCallPhoneDialog: Boolean? = null,
- val showOfflineDialog: Boolean? = null,
- val damagePhoto: List? = null,
- )
+ data class UiState(
+ val orderInfo : OrderInfo? = null,
+ val eleWorkOrderBean : EleWorkOrderBean? = null,
+ val goNextPage : UpdateTaskBean? = null,
+ val isGoNextPageDialog : Boolean? = null,
+ val showCallPhoneDialog : Boolean? = null,
+ val showOfflineDialog : Boolean? = null,
+ val damagePhoto : List? = null,
+ )
}
\ No newline at end of file
diff --git a/servicing/src/main/java/com/za/ui/servicing/go_accident/GoAccidentSiteActivity.kt b/servicing/src/main/java/com/za/ui/servicing/go_accident/GoAccidentSiteActivity.kt
index f466bea..293444e 100644
--- a/servicing/src/main/java/com/za/ui/servicing/go_accident/GoAccidentSiteActivity.kt
+++ b/servicing/src/main/java/com/za/ui/servicing/go_accident/GoAccidentSiteActivity.kt
@@ -65,6 +65,7 @@ import com.za.ext.finish
import com.za.ext.goNextPage
import com.za.servicing.R
import com.za.ui.servicing.view.InServicingHeadView
+import com.za.ui.servicing.view.ServiceOperation
class GoAccidentSiteActivity : BaseActivity() {
@Composable
@@ -354,7 +355,7 @@ fun GoAccidentSiteScreen(vm : GoAccidentSiteVm = viewModel()) {
if (order.distLat != null && order.distLat != 0.0 && order.distLng != null && order.distLng != 0.0) {
mapView.map.addMarker(MarkerOptions().position(LatLng(order.distLat !!,
order.distLng !!)).title("目的地")
- .icon(BitmapDescriptorFactory.fromResource(R.mipmap.sv_dist_map))
+ .icon(ImageUtil.vectorToBitmap(context, R.drawable.sv_map_dist))
.anchor(0.5f, 0.5f))
}
}
@@ -385,6 +386,8 @@ fun GoAccidentSiteScreen(vm : GoAccidentSiteVm = viewModel()) {
}
}
})
+
+ ServiceOperation(orderInfo = uiState.value.orderInfo)
}
}
}
\ No newline at end of file
diff --git a/servicing/src/main/java/com/za/ui/servicing/go_accident/GoAccidentSiteVm.kt b/servicing/src/main/java/com/za/ui/servicing/go_accident/GoAccidentSiteVm.kt
index 09d7b91..9da2acb 100644
--- a/servicing/src/main/java/com/za/ui/servicing/go_accident/GoAccidentSiteVm.kt
+++ b/servicing/src/main/java/com/za/ui/servicing/go_accident/GoAccidentSiteVm.kt
@@ -11,6 +11,7 @@ import com.amap.api.services.route.DriveRouteResult
import com.amap.api.services.route.RideRouteResult
import com.amap.api.services.route.RouteSearch
import com.amap.api.services.route.WalkRouteResult
+import com.blankj.utilcode.util.ActivityUtils
import com.blankj.utilcode.util.ToastUtils
import com.za.base.Const
import com.za.base.IServicingVm
@@ -20,6 +21,7 @@ import com.za.bean.request.UpdateTaskBean
import com.za.bean.request.UpdateTaskRequest
import com.za.common.GlobalData
import com.za.common.log.LogUtil
+import com.za.common.util.ImageUtil
import com.za.ext.getNextStatus
import com.za.ext.toJson
import com.za.net.CommonMethod
@@ -152,7 +154,7 @@ class GoAccidentSiteVm : IServicingVm(null) }
- if (showChoiceMapDialog != null) {
- ChoiceMapDialog(
- dismiss = { showChoiceMapDialog = null },
- lat = orderInfo?.lat.takeIf { showChoiceMapDialog == 1 } ?: orderInfo?.distLat,
- lng = orderInfo?.lng.takeIf { showChoiceMapDialog == 1 } ?: orderInfo?.distLng,
- address = orderInfo?.address.takeIf { showChoiceMapDialog == 1 }
- ?: orderInfo?.distAddress,
- )
- }
+ // 1 事发地 2 目的地
+ var showChoiceMapDialog by remember { mutableStateOf(null) }
+ if (showChoiceMapDialog != null) {
+ ChoiceMapDialog(
+ dismiss = { showChoiceMapDialog = null },
+ lat = orderInfo?.lat.takeIf { showChoiceMapDialog == 1 } ?: orderInfo?.distLat,
+ lng = orderInfo?.lng.takeIf { showChoiceMapDialog == 1 } ?: orderInfo?.distLng,
+ address = orderInfo?.address.takeIf { showChoiceMapDialog == 1 }
+ ?: orderInfo?.distAddress,
+ )
+ }
- Column(modifier = Modifier
- .fillMaxWidth()
- .background(color = Color.White, shape = RoundedCornerShape(4.dp))
- .padding(10.dp), verticalArrangement = Arrangement.Top) {
- Box(contentAlignment = Alignment.CenterStart) {
- Text(text = "服务信息", color = Color.Black, fontWeight = FontWeight.Medium, fontSize = 16.sp)
- }
- HorizontalDivider(color = black5, modifier = Modifier.padding(vertical = 10.dp))
+ Column(modifier = Modifier
+ .fillMaxWidth()
+ .background(color = Color.White, shape = RoundedCornerShape(4.dp))
+ .padding(10.dp),
+ verticalArrangement = Arrangement.Top) {
+ Box(contentAlignment = Alignment.CenterStart) {
+ Text(text = "服务信息",
+ color = Color.Black,
+ fontWeight = FontWeight.Medium,
+ fontSize = 16.sp)
+ }
+ HorizontalDivider(color = black5, modifier = Modifier.padding(vertical = 10.dp))
- Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) {
- Text(text = "服务类型", color = titleColor, fontSize = titleSize, fontWeight = FontWeight.Medium, modifier = Modifier.width(75.dp))
- Spacer(modifier = Modifier.width(5.dp))
- Text(text = "${orderInfo?.serviceTypeName}", color = contentColor, fontSize = titleSize, fontWeight = FontWeight.Medium)
- }
+ Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) {
+ Text(text = "服务类型",
+ color = titleColor,
+ fontSize = titleSize,
+ fontWeight = FontWeight.Medium,
+ modifier = Modifier.width(75.dp))
+ Spacer(modifier = Modifier.width(5.dp))
+ Text(text = "${orderInfo?.serviceTypeName}",
+ color = contentColor,
+ fontSize = titleSize,
+ fontWeight = FontWeight.Medium)
+ }
- Spacer(modifier = Modifier.height(10.dp))
- Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) {
- Text(text = "车辆位于", color = titleColor, fontSize = titleSize, fontWeight = FontWeight.Medium, modifier = Modifier.width(75.dp))
- Spacer(modifier = Modifier.width(5.dp))
- Text(text = "${orderInfo?.addressProperty}", color = contentColor, fontSize = titleSize, fontWeight = FontWeight.Medium)
- }
- Spacer(modifier = Modifier.height(10.dp))
- Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.Top) {
- Text(text = "事发地", color = titleColor, fontSize = titleSize, fontWeight = FontWeight.Medium, modifier = Modifier.width(75.dp))
- Spacer(modifier = Modifier.width(5.dp))
- Text(text = "${orderInfo?.address}",
- color = headBgColor,
- textDecoration = TextDecoration.Underline,
- fontSize = titleSize, fontWeight = FontWeight.Medium, modifier = Modifier.clickable { showChoiceMapDialog = 1 })
- }
- Spacer(modifier = Modifier.height(10.dp))
- Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.Top) {
- Text(text = "事发地备注", color = titleColor, fontSize = titleSize, fontWeight = FontWeight.Medium, modifier = Modifier.width(75.dp))
- Spacer(modifier = Modifier.width(5.dp))
- Text(text = "${orderInfo?.addressRemark}", color = contentColor, fontSize = titleSize, fontWeight = FontWeight.Medium)
- }
+ Spacer(modifier = Modifier.height(10.dp))
+ Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) {
+ Text(text = "车辆位于",
+ color = titleColor,
+ fontSize = titleSize,
+ fontWeight = FontWeight.Medium,
+ modifier = Modifier.width(75.dp))
+ Spacer(modifier = Modifier.width(5.dp))
+ Text(text = "${orderInfo?.addressProperty}",
+ color = contentColor,
+ fontSize = titleSize,
+ fontWeight = FontWeight.Medium)
+ }
+ Spacer(modifier = Modifier.height(10.dp))
+ Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.Top) {
+ Text(text = "事发地",
+ color = titleColor,
+ fontSize = titleSize,
+ fontWeight = FontWeight.Medium,
+ modifier = Modifier.width(75.dp))
+ Spacer(modifier = Modifier.width(5.dp))
+ Text(text = "${orderInfo?.address}",
+ color = headBgColor,
+ textDecoration = TextDecoration.Underline,
+ fontSize = titleSize,
+ fontWeight = FontWeight.Medium,
+ modifier = Modifier.clickable { showChoiceMapDialog = 1 })
+ }
+ Spacer(modifier = Modifier.height(10.dp))
+ Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.Top) {
+ Text(text = "事发地备注",
+ color = titleColor,
+ fontSize = titleSize,
+ fontWeight = FontWeight.Medium,
+ modifier = Modifier.width(75.dp))
+ Spacer(modifier = Modifier.width(5.dp))
+ Text(text = "${orderInfo?.addressRemark}",
+ color = contentColor,
+ fontSize = titleSize,
+ fontWeight = FontWeight.Medium)
+ }
- if (!orderInfo?.distAddress.isNullOrBlank()) {
- Spacer(modifier = Modifier.height(10.dp))
- Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.Top) {
- Text(text = "目的地", color = titleColor, fontSize = titleSize, fontWeight = FontWeight.Medium, modifier = Modifier.width(75.dp))
- Spacer(modifier = Modifier.width(5.dp))
- Text(text = "${orderInfo?.distAddress}",
- color = headBgColor,
- textDecoration = TextDecoration.Underline,
- fontSize = titleSize, fontWeight = FontWeight.Medium, modifier = Modifier.clickable { showChoiceMapDialog = 2 })
- }
- Spacer(modifier = Modifier.height(10.dp))
- Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.Top) {
- Text(text = "目的地备注", color = titleColor, fontSize = titleSize, fontWeight = FontWeight.Medium, modifier = Modifier.width(75.dp))
- Spacer(modifier = Modifier.width(5.dp))
- Text(text = "${orderInfo?.distAddressRemark}", color = contentColor, fontSize = titleSize, fontWeight = FontWeight.Medium)
- }
- }
+ if (! orderInfo?.distAddress.isNullOrBlank()) {
+ Spacer(modifier = Modifier.height(10.dp))
+ Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.Top) {
+ Text(text = "目的地",
+ color = titleColor,
+ fontSize = titleSize,
+ fontWeight = FontWeight.Medium,
+ modifier = Modifier.width(75.dp))
+ Spacer(modifier = Modifier.width(5.dp))
+ Text(text = "${orderInfo?.distAddress}",
+ color = headBgColor,
+ textDecoration = TextDecoration.Underline,
+ fontSize = titleSize,
+ fontWeight = FontWeight.Medium,
+ modifier = Modifier.clickable { showChoiceMapDialog = 2 })
+ }
+ Spacer(modifier = Modifier.height(10.dp))
+ Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.Top) {
+ Text(text = "目的地备注",
+ color = titleColor,
+ fontSize = titleSize,
+ fontWeight = FontWeight.Medium,
+ modifier = Modifier.width(75.dp))
+ Spacer(modifier = Modifier.width(5.dp))
+ Text(text = "${orderInfo?.distAddressRemark}",
+ color = contentColor,
+ fontSize = titleSize,
+ fontWeight = FontWeight.Medium)
+ }
+ }
- Spacer(modifier = Modifier.height(10.dp))
- Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) {
- Text(text = "订单状态", color = titleColor, fontSize = titleSize, fontWeight = FontWeight.Medium, modifier = Modifier.width(75.dp))
- Spacer(modifier = Modifier.width(5.dp))
- Text(text = "${orderInfo?.convertToFlowName()}", color = contentColor, fontSize = titleSize, fontWeight = FontWeight.Medium)
- }
+ Spacer(modifier = Modifier.height(10.dp))
+ Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) {
+ Text(text = "订单状态",
+ color = titleColor,
+ fontSize = titleSize,
+ fontWeight = FontWeight.Medium,
+ modifier = Modifier.width(75.dp))
+ Spacer(modifier = Modifier.width(5.dp))
+ Text(text = "${orderInfo?.convertToFlowName()}",
+ color = contentColor,
+ fontSize = titleSize,
+ fontWeight = FontWeight.Medium)
+ }
- Spacer(modifier = Modifier.height(10.dp))
- Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) {
- Text(text = "备注", color = titleColor, fontSize = titleSize, fontWeight = FontWeight.Medium, modifier = Modifier.width(75.dp))
- Spacer(modifier = Modifier.width(5.dp))
- Text(text = orderInfo?.importantTip
- ?: "", color = contentColor, fontSize = titleSize, fontWeight = FontWeight.Medium)
- }
- }
+ Spacer(modifier = Modifier.height(10.dp))
+ Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) {
+ Text(text = "备注",
+ color = titleColor,
+ fontSize = titleSize,
+ fontWeight = FontWeight.Medium,
+ modifier = Modifier.width(75.dp))
+ Spacer(modifier = Modifier.width(5.dp))
+ Text(text = orderInfo?.importantTip ?: "",
+ color = contentColor,
+ fontSize = titleSize,
+ fontWeight = FontWeight.Medium)
+ }
+ }
- Spacer(modifier = Modifier.height(10.dp))
+ Spacer(modifier = Modifier.height(10.dp))
+
+ CommonButton(text = "客户放弃") {
+ OrderGiveUpActivity.goOrderGiveUpActivity(context,
+ orderInfo = orderInfo,
+ userOrderId = orderInfo?.userOrderId,
+ giveUpType = 0)
+ }
}
\ No newline at end of file
diff --git a/servicing/src/main/java/com/za/ui/servicing/in_servicing_setting/OrderDetailScreen.kt b/servicing/src/main/java/com/za/ui/servicing/in_servicing_setting/OrderDetailScreen.kt
index 2be907f..7d2095c 100644
--- a/servicing/src/main/java/com/za/ui/servicing/in_servicing_setting/OrderDetailScreen.kt
+++ b/servicing/src/main/java/com/za/ui/servicing/in_servicing_setting/OrderDetailScreen.kt
@@ -1,80 +1,98 @@
package com.za.ui.servicing.in_servicing_setting
+import androidx.compose.foundation.background
+import androidx.compose.foundation.clickable
+import androidx.compose.foundation.horizontalScroll
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.width
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.rememberPagerState
+import androidx.compose.foundation.rememberScrollState
+import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Scaffold
+import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp
+import com.za.base.theme.headBgColor
+import com.za.base.theme.white80
import com.za.base.view.HeadView
import com.za.bean.db.order.OrderInfo
import com.za.ext.finish
+import kotlinx.coroutines.launch
@Composable
-fun OrderDetailScreen(orderInfo: OrderInfo?) {
- val context = LocalContext.current
-// val titleList = listOf("订单详情", "案件照片")
- val titleList = listOf("订单详情")
- val pagerState = rememberPagerState(initialPage = 0, pageCount = { titleList.size })
- val scope = rememberCoroutineScope()
- Scaffold(topBar = {
- HeadView(title = "案件信息", onBack = { context.finish() })
- }) {
- Column(modifier = Modifier
- .fillMaxSize()
- .padding(it)) {
+fun OrderDetailScreen(orderInfo : OrderInfo?) {
+ val context = LocalContext.current
+ val titleList = listOf("订单详情", "案件要求")
+ val pagerState = rememberPagerState(initialPage = 0, pageCount = { titleList.size })
+ val scope = rememberCoroutineScope()
+ Scaffold(topBar = {
+ HeadView(title = "订单信息", onBack = { context.finish() })
+ }) {
+ Column(modifier = Modifier
+ .fillMaxSize()
+ .padding(it)) {
+ Row(modifier = Modifier
+ .fillMaxWidth()
+ .horizontalScroll(state = rememberScrollState())
+ .height(30.dp)
+ .background(color = headBgColor),
+ verticalAlignment = Alignment.CenterVertically) {
+ for (i in 0 until pagerState.pageCount) {
+ if (pagerState.currentPage == i) {
+ Column(modifier = Modifier.weight(1f),
+ verticalArrangement = Arrangement.Center,
+ horizontalAlignment = Alignment.CenterHorizontally) {
+ Text(text = titleList[i], color = Color.White)
+ HorizontalDivider(thickness = 0.dp,
+ modifier = Modifier
+ .width(25.dp)
+ .height(3.dp)
+ .background(color = Color.White,
+ shape = RoundedCornerShape(8.dp)))
+ }
+ } else {
+ Box(modifier = Modifier
+ .weight(1f)
+ .clickable {
+ scope.launch {
+ pagerState.animateScrollToPage(page = i)
+ }
+ }, contentAlignment = Alignment.Center) {
+ Text(text = titleList[i], color = white80)
+ }
+ }
+ }
+ }
-// Row(modifier = Modifier
-// .fillMaxWidth()
-// .horizontalScroll(state = rememberScrollState())
-// .height(30.dp)
-// .background(color = headBgColor), verticalAlignment = Alignment.CenterVertically) {
-// for (i in 0 until pagerState.pageCount) {
-// if (pagerState.currentPage == i) {
-// Column(modifier = Modifier
-// .weight(1f),
-// verticalArrangement = Arrangement.Center,
-// horizontalAlignment = Alignment.CenterHorizontally) {
-// Text(text = titleList[i], color = Color.White)
-// HorizontalDivider(thickness = 0.dp,
-// modifier = Modifier
-// .width(25.dp)
-// .height(3.dp)
-// .background(color = Color.White, shape = RoundedCornerShape(8.dp)))
-// }
-// } else {
-// Box(modifier = Modifier
-// .weight(1f)
-// .clickable {
-// scope.launch {
-// pagerState.animateScrollToPage(page = i)
-// }
-// }, contentAlignment = Alignment.Center) {
-// Text(text = titleList[i], color = white80)
-// }
-// }
-// }
-// }
-
- HorizontalPager(state = pagerState, modifier = Modifier
- .fillMaxSize()
- .padding(10.dp), verticalAlignment = Alignment.CenterVertically) {
- when (pagerState.currentPage) {
- 0 -> OrderDetailItemScreen(orderInfo = orderInfo)
- 1 -> OrderPhotoScreen(orderInfo = orderInfo)
- 2 -> OrderSettleScreen(orderInfo = orderInfo)
- 3 -> OrderEleScreen(orderInfo = orderInfo)
- 4 -> OrderTriceScreen(orderInfo = orderInfo)
- }
- }
+ HorizontalPager(state = pagerState,
+ modifier = Modifier
+ .fillMaxSize()
+ .padding(10.dp),
+ verticalAlignment = Alignment.CenterVertically) {
+ when (pagerState.currentPage) {
+ 0 -> OrderDetailItemScreen(orderInfo = orderInfo)
+ 1 -> OrderRequirementsScreen(orderInfo = orderInfo)
+ 2 -> OrderSettleScreen(orderInfo = orderInfo)
+ 3 -> OrderEleScreen(orderInfo = orderInfo)
+ 4 -> OrderTriceScreen(orderInfo = orderInfo)
+ }
+ }
- }
- }
+ }
+ }
}
\ No newline at end of file
diff --git a/servicing/src/main/java/com/za/ui/servicing/in_servicing_setting/OrderRequirementsScreen.kt b/servicing/src/main/java/com/za/ui/servicing/in_servicing_setting/OrderRequirementsScreen.kt
index 0bd20b7..b7b8093 100644
--- a/servicing/src/main/java/com/za/ui/servicing/in_servicing_setting/OrderRequirementsScreen.kt
+++ b/servicing/src/main/java/com/za/ui/servicing/in_servicing_setting/OrderRequirementsScreen.kt
@@ -18,118 +18,86 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import coil.compose.AsyncImage
import com.za.base.theme.black5
import com.za.base.theme.black65
-import com.za.base.view.HeadView
import com.za.bean.db.order.OrderInfo
-import com.za.ext.finish
import com.za.servicing.R
@Composable
-fun OrderRequirementsScreen(orderInfo: OrderInfo?) {
- val context = LocalContext.current
- Scaffold(topBar = {
- HeadView(title = "案件要求", onBack = {
- context.finish()
- })
- }) {
- Column(modifier = Modifier
- .fillMaxSize()
- .verticalScroll(state = rememberScrollState())
- .padding(it)
- .padding(horizontal = 16.dp)) {
- Spacer(modifier = Modifier.height(12.dp))
- OrderRequirementsItemView(title = "特殊提醒", content = orderInfo?.otherNotes)
- OrderRequirementsItemView(title = "收费标准", content = orderInfo?.feeStandard)
- if (!orderInfo?.carModel.isNullOrBlank()) {
- CarModeView(orderInfo = orderInfo)
- }
- OrderRequirementsItemView(title = "救援要求", content = orderInfo?.taskNotes)
- OrderRequirementsItemView(title = "客户要求", content = orderInfo?.customerNotes)
- Spacer(modifier = Modifier.height(16.dp))
- }
- }
+fun OrderRequirementsScreen(orderInfo : OrderInfo?) {
+ Scaffold {
+ Column(modifier = Modifier
+ .fillMaxSize()
+ .verticalScroll(state = rememberScrollState())
+ .padding(it)
+ .padding(horizontal = 16.dp)) {
+ Spacer(modifier = Modifier.height(12.dp))
+ OrderRequirementsItemView(title = "特殊提醒", content = orderInfo?.otherNotes)
+ OrderRequirementsItemView(title = "收费标准", content = orderInfo?.feeStandard)
+ if (! orderInfo?.carModel.isNullOrBlank()) {
+ CarModeView(orderInfo = orderInfo)
+ }
+ OrderRequirementsItemView(title = "救援要求", content = orderInfo?.taskNotes)
+ OrderRequirementsItemView(title = "客户要求", content = orderInfo?.customerNotes)
+ Spacer(modifier = Modifier.height(16.dp))
+ }
+ }
}
@Composable
-private fun OrderRequirementsItemView(title: String?, content: String?) {
- Column(modifier = Modifier
- .fillMaxWidth()
- .padding(vertical = 12.dp)) {
- Row(
- modifier = Modifier.fillMaxWidth(),
- verticalAlignment = Alignment.CenterVertically
- ) {
- AsyncImage(
- model = R.drawable.sv_warn_red,
- contentDescription = null,
- modifier = Modifier.size(16.dp)
- )
- Spacer(modifier = Modifier.width(8.dp))
- Text(
- text = title ?: "",
- color = Color.Black,
- fontSize = 15.sp,
- fontWeight = FontWeight.Medium
- )
- }
- Spacer(modifier = Modifier.height(12.dp))
- Text(
- text = content?.replace("
", "\n\n") ?: "无",
- fontSize = 14.sp,
- fontWeight = FontWeight.Normal,
- color = black65,
- lineHeight = 20.sp,
- modifier = Modifier.padding(start = 24.dp)
- )
- Spacer(modifier = Modifier.height(12.dp))
- HorizontalDivider(
- color = black5,
- modifier = Modifier.fillMaxWidth()
- )
- }
+private fun OrderRequirementsItemView(title : String?, content : String?) {
+ Column(modifier = Modifier
+ .fillMaxWidth()
+ .padding(vertical = 12.dp)) {
+ Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) {
+ AsyncImage(model = R.drawable.sv_warn_red,
+ contentDescription = null,
+ modifier = Modifier.size(16.dp))
+ Spacer(modifier = Modifier.width(8.dp))
+ Text(text = title ?: "",
+ color = Color.Black,
+ fontSize = 15.sp,
+ fontWeight = FontWeight.Medium)
+ }
+ Spacer(modifier = Modifier.height(12.dp))
+ Text(text = content?.replace("
", "\n\n") ?: "无",
+ fontSize = 14.sp,
+ fontWeight = FontWeight.Normal,
+ color = black65,
+ lineHeight = 20.sp,
+ modifier = Modifier.padding(start = 24.dp))
+ Spacer(modifier = Modifier.height(12.dp))
+ HorizontalDivider(color = black5, modifier = Modifier.fillMaxWidth())
+ }
}
@Composable
-private fun CarModeView(orderInfo: OrderInfo?) {
- Column(modifier = Modifier
- .fillMaxWidth()
- .padding(vertical = 12.dp)) {
- Row(
- modifier = Modifier.fillMaxWidth(),
- verticalAlignment = Alignment.CenterVertically
- ) {
- AsyncImage(
- model = R.drawable.sv_warn_red,
- contentDescription = null,
- modifier = Modifier.size(16.dp)
- )
- Spacer(modifier = Modifier.width(8.dp))
- Text(
- text = "车型 ${orderInfo?.carModel}",
- color = Color.Black,
- fontSize = 15.sp,
- fontWeight = FontWeight.Medium
- )
- if (orderInfo?.linkToDocs == true) {
- Spacer(modifier = Modifier.width(12.dp))
- Text(
- text = "点击查看相关资料",
- color = Color(0xFFffa500),
- fontSize = 14.sp,
- fontWeight = FontWeight.Medium
- )
- }
- }
- Spacer(modifier = Modifier.height(12.dp))
- HorizontalDivider(
- color = black5,
- modifier = Modifier.fillMaxWidth()
- )
- }
+private fun CarModeView(orderInfo : OrderInfo?) {
+ Column(modifier = Modifier
+ .fillMaxWidth()
+ .padding(vertical = 12.dp)) {
+ Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) {
+ AsyncImage(model = R.drawable.sv_warn_red,
+ contentDescription = null,
+ modifier = Modifier.size(16.dp))
+ Spacer(modifier = Modifier.width(8.dp))
+ Text(text = "车型 ${orderInfo?.carModel}",
+ color = Color.Black,
+ fontSize = 15.sp,
+ fontWeight = FontWeight.Medium)
+ if (orderInfo?.linkToDocs == true) {
+ Spacer(modifier = Modifier.width(12.dp))
+ Text(text = "点击查看相关资料",
+ color = Color(0xFFffa500),
+ fontSize = 14.sp,
+ fontWeight = FontWeight.Medium)
+ }
+ }
+ Spacer(modifier = Modifier.height(12.dp))
+ HorizontalDivider(color = black5, modifier = Modifier.fillMaxWidth())
+ }
}
\ No newline at end of file
diff --git a/servicing/src/main/java/com/za/ui/servicing/inservice_people_confirm/InServicePeopleConfirmActivity.kt b/servicing/src/main/java/com/za/ui/servicing/inservice_people_confirm/InServicePeopleConfirmActivity.kt
index 6ba3ee4..c8d1f8c 100644
--- a/servicing/src/main/java/com/za/ui/servicing/inservice_people_confirm/InServicePeopleConfirmActivity.kt
+++ b/servicing/src/main/java/com/za/ui/servicing/inservice_people_confirm/InServicePeopleConfirmActivity.kt
@@ -8,6 +8,6 @@ class ServicePeopleConfirmActivity : BaseActivity() {
@Composable
override fun ContentView() {
- ServicePeopleConfirmScreen()
+ ServicePeopleConfirmScreen(onBack = { this.finish() })
}
}
diff --git a/servicing/src/main/java/com/za/ui/servicing/inservice_people_confirm/ServicePeopleConfirmScreen.kt b/servicing/src/main/java/com/za/ui/servicing/inservice_people_confirm/ServicePeopleConfirmScreen.kt
index 0b62388..8431fa2 100644
--- a/servicing/src/main/java/com/za/ui/servicing/inservice_people_confirm/ServicePeopleConfirmScreen.kt
+++ b/servicing/src/main/java/com/za/ui/servicing/inservice_people_confirm/ServicePeopleConfirmScreen.kt
@@ -2,6 +2,7 @@ package com.za.ui.servicing.inservice_people_confirm
import android.app.Activity
import android.content.Intent
+import androidx.activity.compose.BackHandler
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.compose.foundation.background
@@ -37,14 +38,14 @@ import com.za.base.view.CommonDialog
import com.za.base.view.HeadView
import com.za.common.GlobalData
import com.za.common.log.LogUtil
-import com.za.ext.finish
import com.za.ext.goNextPage
import com.za.servicing.R
import com.za.ui.camera.ZdCameraXActivity
@Composable
fun ServicePeopleConfirmScreen(vm : InServicePeopleConfirmVm = viewModel(),
- success : () -> Unit = {}) {
+ success : () -> Unit = {},
+ onBack : () -> Unit) {
val context = LocalContext.current
val uiState = vm.uiState.collectAsStateWithLifecycle()
val getResult =
@@ -60,6 +61,11 @@ fun ServicePeopleConfirmScreen(vm : InServicePeopleConfirmVm = viewModel(),
}
}
+
+ BackHandler {
+ onBack()
+ }
+
if (uiState.value.compareResult == true) {
vm.updateState(uiState.value.copy(compareResult = null))
if (GlobalData.isMaster) {
@@ -93,7 +99,7 @@ fun ServicePeopleConfirmScreen(vm : InServicePeopleConfirmVm = viewModel(),
})
}
- Scaffold(topBar = { HeadView(title = "身份验证", onBack = { context.finish() }) }) {
+ Scaffold(topBar = { HeadView(title = "身份验证", onBack = onBack) }) {
Column(modifier = Modifier
.fillMaxSize()
.background(color = Color.White)
diff --git a/servicing/src/main/java/com/za/ui/servicing/order_confirm/ConfirmEleVm.kt b/servicing/src/main/java/com/za/ui/servicing/order_confirm/ConfirmEleVm.kt
index 321ec14..6dac887 100644
--- a/servicing/src/main/java/com/za/ui/servicing/order_confirm/ConfirmEleVm.kt
+++ b/servicing/src/main/java/com/za/ui/servicing/order_confirm/ConfirmEleVm.kt
@@ -208,15 +208,16 @@ class ConfirmEleVm : IServicingVm() {
return
}
- if (eleWorkOrderBean.localAcceptCarSignPath.isNullOrBlank() || eleWorkOrderBean.localServicePeopleSignPath.isNullOrBlank()) {
- showTipDialog("请先上传签名!")
- return
- }
-
if (! getCurrentOrderOfflineTask().isNullOrEmpty()) {
uploadOffline()
return
}
+
+ if (eleWorkOrderBean.localAcceptCarSignPath.isNullOrBlank() || eleWorkOrderBean.localServicePeopleSignPath.isNullOrBlank()) {
+ showTipDialog("请先上传签名!")
+ return
+ }
+
LoadingManager.showLoading()
ZdLocationManager.getSingleLocation(success = {
LoadingManager.hideLoading()
diff --git a/servicing/src/main/java/com/za/ui/servicing/order_give_up/OrderGiveUpVm.kt b/servicing/src/main/java/com/za/ui/servicing/order_give_up/OrderGiveUpVm.kt
index f9e4ce6..43b1bbe 100644
--- a/servicing/src/main/java/com/za/ui/servicing/order_give_up/OrderGiveUpVm.kt
+++ b/servicing/src/main/java/com/za/ui/servicing/order_give_up/OrderGiveUpVm.kt
@@ -15,6 +15,7 @@ import com.za.bean.request.UpdatePhotoRequest
import com.za.bean.request.UploadPhotoBean
import com.za.common.GlobalData
import com.za.common.log.LogUtil
+import com.za.ext.toJson
import com.za.net.BaseObserver
import com.za.net.CommonMethod
import com.za.net.RetrofitHelper
@@ -26,323 +27,341 @@ import kotlinx.coroutines.flow.MutableStateFlow
import java.io.File
class OrderGiveUpVm : BaseVm() {
- private val _uiState = MutableStateFlow(UiState())
- val uiState get() = _uiState
- override fun updateState(uiState: UiState) {
- _uiState.value = uiState
- }
+ private val _uiState = MutableStateFlow(UiState())
+ val uiState get() = _uiState
+ override fun updateState(uiState : UiState) {
+ _uiState.value = uiState
+ }
- override fun dispatch(action: Action) {
- when (action) {
- is Action.Init -> init()
- is Action.UpdateTask -> {
- when (uiState.value.giveUpType) {
- 0 -> giveUp()
- 1 -> giveUpFromServer()
- 2 -> giveUpFromGoPreview()
- }
- }
+ override fun dispatch(action : Action) {
+ when (action) {
+ is Action.Init -> init()
+ is Action.UpdateTask -> {
+ when (uiState.value.giveUpType) {
+ 0 -> giveUp()
+ 1 -> giveUpFromServer()
+ 2 -> giveUpFromGoPreview()
+ }
+ }
- is Action.UpdateState -> updateState(action.uiState)
- is Action.UpdatePhotoTemplate -> updateTemplate()
- is Action.UploadSign -> uploadSign(action.signPath)
- }
- }
+ is Action.UpdateState -> updateState(action.uiState)
+ is Action.UpdatePhotoTemplate -> updateTemplate()
+ is Action.UploadSign -> uploadSign(action.signPath)
+ }
+ }
- private fun uploadSign(path: String?) {
- if (path.isNullOrBlank()) {
- ToastUtils.showLong("照片路径为空,请重新签名!")
- return
- }
+ private fun uploadSign(path : String?) {
+ if (path.isNullOrBlank()) {
+ ToastUtils.showLong("照片路径为空,请重新签名!")
+ return
+ }
- CommonMethod.uploadImage(File(path), success = { it ->
- val eleWorkOrderBean = uiState.value.eleWorkOrderBean
- if (eleWorkOrderBean == null) {
- updateState(uiState.value.copy(serverServicePeopleSignPath = it))
- } else {
- val ele = eleWorkOrderBean.copy(serverServicePeopleSignPath = it, localServicePeopleSignPath = path)
- RoomHelper.db?.eleWorkOrderDao()?.update(ele)
- updateState(uiState.value.copy(eleWorkOrderBean = ele, serverServicePeopleSignPath = it))
- }
- }, failed = {
- ToastUtils.showShort("签名上传失败,请重新签名")
- })
- }
+ CommonMethod.uploadImage(File(path), success = { it ->
+ val eleWorkOrderBean = uiState.value.eleWorkOrderBean
+ if (eleWorkOrderBean == null) {
+ updateState(uiState.value.copy(serverServicePeopleSignPath = it))
+ } else {
+ val ele = eleWorkOrderBean.copy(serverServicePeopleSignPath = it,
+ localServicePeopleSignPath = path)
+ RoomHelper.db?.eleWorkOrderDao()?.update(ele)
+ updateState(uiState.value.copy(eleWorkOrderBean = ele,
+ serverServicePeopleSignPath = it))
+ }
+ }, failed = {
+ ToastUtils.showShort("签名上传失败,请重新签名")
+ })
+ }
- private fun updateTemplate() {
- val list = RoomHelper.db?.photoTemplateDao()?.getOrderPhotoTemplateFromTaskNodeAndTaskId(18100, uiState.value.orderInfo?.taskId
- ?: 0)
- updateState(uiState.value.copy(photoTemplateList = list))
- }
+ private fun updateTemplate() {
+ val list = RoomHelper.db?.photoTemplateDao()?.getOrderPhotoTemplateFromTaskNodeAndTaskId(
+ 18100,
+ uiState.value.orderInfo?.taskId ?: 0)
+ updateState(uiState.value.copy(photoTemplateList = list))
+ }
- private fun giveUpFromServer() {
- if (uiState.value.photoTemplateList.isNullOrEmpty()) {
- ToastUtils.showShort("作业照片不能为空!")
- return
- }
+ private fun giveUpFromServer() {
+ if (uiState.value.photoTemplateList.isNullOrEmpty()) {
+ ToastUtils.showShort("作业照片不能为空!")
+ return
+ }
- //校验必拍照片是否拍摄
- uiState.value.photoTemplateList?.forEach {
- if (it.doHaveFilm == 1 && it.photoUploadPath.isNullOrBlank() && it.photoType != 2) {
- ToastUtils.showLong("请上传${it.imageTitle}")
- return
- }
- }
+ //校验必拍照片是否拍摄
+ uiState.value.photoTemplateList?.forEach {
+ if (it.doHaveFilm == 1 && it.photoUploadPath.isNullOrBlank() && it.photoType != 2) {
+ ToastUtils.showLong("请上传${it.imageTitle}")
+ return
+ }
+ }
- LoadingManager.showLoading()
- uiState.value.photoTemplateList?.fastForEachIndexed { i, item ->
- if (item.photoUploadPath.isNullOrBlank()) {
- return@fastForEachIndexed
- }
- val jsonObject = JSONObject()
- jsonObject["realTakePhotoTime"] = item.realTakePhotoTime ?: ""
- jsonObject["photoSource"] = item.photoSource
- jsonObject["time"] = item.time
- jsonObject["lat"] = item.lat
- jsonObject["path"] = item.photoUploadPath
- jsonObject["lng"] = item.lng
- jsonObject["address"] = item.address
+ LoadingManager.showLoading()
+ uiState.value.photoTemplateList?.fastForEachIndexed { i, item ->
+ if (item.photoUploadPath.isNullOrBlank()) {
+ return@fastForEachIndexed
+ }
+ val jsonObject = JSONObject()
+ jsonObject["realTakePhotoTime"] = item.realTakePhotoTime ?: ""
+ jsonObject["photoSource"] = item.photoSource
+ jsonObject["time"] = item.time
+ jsonObject["lat"] = item.lat
+ jsonObject["path"] = item.photoUploadPath
+ jsonObject["lng"] = item.lng
+ jsonObject["address"] = item.address
- val request = UpdatePhotoRequest(taskId = uiState.value.taskId,
- taskState = "GIVEUP",
- picturePosition = i + 1,
- picturePath = item.photoUploadPath,
- imgInfo = jsonObject.toJSONString())
+ val request = UpdatePhotoRequest(taskId = uiState.value.taskId,
+ taskState = "GIVEUP",
+ picturePosition = i + 1,
+ picturePath = item.photoUploadPath,
+ imgInfo = jsonObject.toJSONString())
- RetrofitHelper.getDefaultService().addPhoto(request)
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(object : BaseObserver() {
- override fun doSuccess(it: UploadPhotoBean?) {
- LoadingManager.hideLoading()
- }
+ RetrofitHelper.getDefaultService().addPhoto(request).subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(object : BaseObserver() {
+ override fun doSuccess(it : UploadPhotoBean?) {
+ LoadingManager.hideLoading()
+ }
- override fun doFailure(code: Int, msg: String?) {
- LoadingManager.hideLoading()
- ToastUtils.showLong(msg)
- }
- })
- }
+ override fun doFailure(code : Int, msg : String?) {
+ LoadingManager.hideLoading()
+ ToastUtils.showLong(msg)
+ }
+ })
+ }
- updateState(uiState.value.copy(orderGiveUpSuccess = true))
- GlobalData.clearOrderCache(uiState.value.orderInfo?.taskId ?: uiState.value.taskId ?: 0)
- }
+ updateState(uiState.value.copy(orderGiveUpSuccess = true))
+ GlobalData.clearOrderCache(uiState.value.orderInfo?.taskId ?: uiState.value.taskId ?: 0)
+ }
- private fun giveUpFromGoPreview() {
- if (uiState.value.photoTemplateList.isNullOrEmpty()) {
- ToastUtils.showShort("作业照片不能为空!")
- return
- }
+ private fun giveUpFromGoPreview() {
+ if (uiState.value.photoTemplateList.isNullOrEmpty()) {
+ ToastUtils.showShort("作业照片不能为空!")
+ return
+ }
- //校验必拍照片是否拍摄
- uiState.value.photoTemplateList?.forEach {
- if (it.doHaveFilm == 1 && it.photoUploadPath.isNullOrBlank() && it.photoType != 2) {
- ToastUtils.showLong("请上传${it.imageTitle}")
- return
- }
- }
+ //校验必拍照片是否拍摄
+ uiState.value.photoTemplateList?.forEach {
+ if (it.doHaveFilm == 1 && it.photoUploadPath.isNullOrBlank() && it.photoType != 2) {
+ ToastUtils.showLong("请上传${it.imageTitle}")
+ return
+ }
+ }
- val tempPhotoList = arrayListOf()
- uiState.value.photoTemplateList?.forEach { item ->
- if (item.photoType == 2 || item.photoUploadPath.isNullOrBlank()) {
- tempPhotoList.add(null)
- } else {
- val jsonObject = JSONObject()
- jsonObject["realTakePhotoTime"] = item.realTakePhotoTime ?: ""
- jsonObject["photoSource"] = item.photoSource
- jsonObject["time"] = item.time
- jsonObject["lat"] = item.lat
- jsonObject["path"] = item.photoUploadPath
- jsonObject["lng"] = item.lng
- jsonObject["address"] = item.address
- tempPhotoList.add(jsonObject.toJSONString())
- }
- }
+ val tempPhotoList = arrayListOf()
+ uiState.value.photoTemplateList?.forEach { item ->
+ if (item.photoType == 2 || item.photoUploadPath.isNullOrBlank()) {
+ tempPhotoList.add(null)
+ } else {
+ val jsonObject = JSONObject()
+ jsonObject["realTakePhotoTime"] = item.realTakePhotoTime ?: ""
+ jsonObject["photoSource"] = item.photoSource
+ jsonObject["time"] = item.time
+ jsonObject["lat"] = item.lat
+ jsonObject["path"] = item.photoUploadPath
+ jsonObject["lng"] = item.lng
+ jsonObject["address"] = item.address
+ tempPhotoList.add(jsonObject.toJSONString())
+ }
+ }
- LoadingManager.showLoading()
- ZdLocationManager.getSingleLocation(isNeedAddress = true,success = {
- LoadingManager.hideLoading()
- val taskRequest = GiveUpTaskRequest(
- taskId = GlobalData.currentOrder?.taskId,
- userId = GlobalData.driverInfoBean?.userId,
- vehicleId = GlobalData.driverInfoBean?.vehicleId,
- lat = it.latitude,
- address = it.address,
- pushGiveUpFlag = 1,
- lng = it.longitude,
- templatePhotoInfoList = tempPhotoList.toList())
- doGiveUpTask(request = taskRequest)
- }, failed = {
- LoadingManager.hideLoading()
- ToastUtils.showShort(it)
- })
- }
+ LoadingManager.showLoading()
+ ZdLocationManager.getSingleLocation(isNeedAddress = true, success = {
+ LoadingManager.hideLoading()
+ val taskRequest = GiveUpTaskRequest(taskId = GlobalData.currentOrder?.taskId,
+ userId = GlobalData.driverInfoBean?.userId,
+ vehicleId = GlobalData.driverInfoBean?.vehicleId,
+ lat = it.latitude,
+ address = it.address,
+ pushGiveUpFlag = 1,
+ lng = it.longitude,
+ templatePhotoInfoList = tempPhotoList.toList())
+ doGiveUpTask(request = taskRequest)
+ }, failed = {
+ LoadingManager.hideLoading()
+ ToastUtils.showShort(it)
+ })
+ }
- private fun giveUp() {
- uploadEleWorkOrder {
- if (uiState.value.photoTemplateList.isNullOrEmpty()) {
- ToastUtils.showShort("作业照片不能为空!")
- return@uploadEleWorkOrder
- }
+ private fun giveUp() {
+ uploadEleWorkOrder {
+ if (uiState.value.photoTemplateList.isNullOrEmpty()) {
+ ToastUtils.showShort("作业照片不能为空!")
+ return@uploadEleWorkOrder
+ }
- //校验必拍照片是否拍摄
- uiState.value.photoTemplateList?.forEach {
- if (it.doHaveFilm == 1 && it.photoUploadPath.isNullOrBlank() && it.photoType != 2) {
- ToastUtils.showLong("请上传${it.imageTitle}")
- return@uploadEleWorkOrder
- }
- }
+ //校验必拍照片是否拍摄
+ uiState.value.photoTemplateList?.forEach {
+ if (it.doHaveFilm == 1 && it.photoUploadPath.isNullOrBlank() && it.photoType != 2) {
+ ToastUtils.showLong("请上传${it.imageTitle}")
+ return@uploadEleWorkOrder
+ }
+ }
- val tempPhotoList = arrayListOf()
- uiState.value.photoTemplateList?.forEach { item ->
- if (item.photoType == 2 || item.photoUploadPath.isNullOrBlank()) {
- tempPhotoList.add(null)
- } else {
- val jsonObject = JSONObject()
- jsonObject["realTakePhotoTime"] = item.realTakePhotoTime ?: ""
- jsonObject["photoSource"] = item.photoSource
- jsonObject["time"] = item.time
- jsonObject["lat"] = item.lat
- jsonObject["path"] = item.photoUploadPath
- jsonObject["lng"] = item.lng
- jsonObject["address"] = item.address
- tempPhotoList.add(jsonObject.toJSONString())
- }
- }
+ val tempPhotoList = arrayListOf()
+ uiState.value.photoTemplateList?.forEach { item ->
+ if (item.photoType == 2 || item.photoUploadPath.isNullOrBlank()) {
+ tempPhotoList.add(null)
+ } else {
+ val jsonObject = JSONObject()
+ jsonObject["realTakePhotoTime"] = item.realTakePhotoTime ?: ""
+ jsonObject["photoSource"] = item.photoSource
+ jsonObject["time"] = item.time
+ jsonObject["lat"] = item.lat
+ jsonObject["path"] = item.photoUploadPath
+ jsonObject["lng"] = item.lng
+ jsonObject["address"] = item.address
+ tempPhotoList.add(jsonObject.toJSONString())
+ }
+ }
- LoadingManager.showLoading()
- ZdLocationManager.getSingleLocation(success = {
- LoadingManager.hideLoading()
- val taskRequest = GiveUpTaskRequest(
- taskId = GlobalData.currentOrder?.taskId,
- userId = GlobalData.driverInfoBean?.userId,
- vehicleId = GlobalData.driverInfoBean?.vehicleId,
- lat = it.latitude,
- address = it.address,
- lng = it.longitude,
- templatePhotoInfoList = tempPhotoList.toList())
- doGiveUpTask(request = taskRequest)
- }, failed = {
- LoadingManager.hideLoading()
- ToastUtils.showShort(it)
- })
- }
- }
+ LoadingManager.showLoading()
+ ZdLocationManager.getSingleLocation(success = {
+ LoadingManager.hideLoading()
+ val taskRequest = GiveUpTaskRequest(taskId = GlobalData.currentOrder?.taskId,
+ userId = GlobalData.driverInfoBean?.userId,
+ vehicleId = GlobalData.driverInfoBean?.vehicleId,
+ lat = it.latitude,
+ address = it.address,
+ lng = it.longitude,
+ templatePhotoInfoList = tempPhotoList.toList())
+ doGiveUpTask(request = taskRequest)
+ }, failed = {
+ LoadingManager.hideLoading()
+ ToastUtils.showShort(it)
+ })
+ }
+ }
- private fun uploadEleWorkOrder(success: () -> Unit) {
- val eleWorkOrderBean = uiState.value.eleWorkOrderBean
- if (uiState.value.serverServicePeopleSignPath.isNullOrBlank()) {
- ToastUtils.showShort("请填写签名")
- return
- }
- LoadingManager.showLoading()
- val saveEleOrderRequest = SaveEleOrderRequest(
- taskOrderId = uiState.value.orderInfo?.taskId,
- userOrderId = uiState.value.orderInfo?.userOrderId,
- state = 3,
- hasSuccess = eleWorkOrderBean?.isSuccess,
- waitstaffSignPath = uiState.value.serverServicePeopleSignPath)
- RetrofitHelper.getDefaultService().saveElectronOrder(saveEleOrderRequest)
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(object : BaseObserver() {
- override fun doSuccess(it: String?) {
- LoadingManager.hideLoading()
- if (eleWorkOrderBean != null) {
- RoomHelper.db?.eleWorkOrderDao()?.update(eleWorkOrderBean.copy(orderWorkStatus = 3))
- updateState(uiState.value.copy(eleWorkOrderBean = eleWorkOrderBean.copy(orderWorkStatus = 3)))
- }
- success()
- }
+ private fun uploadEleWorkOrder(success : () -> Unit) {
+ val eleWorkOrderBean = uiState.value.eleWorkOrderBean
+ if (uiState.value.serverServicePeopleSignPath.isNullOrBlank()) {
+ ToastUtils.showShort("请填写签名")
+ return
+ }
+ LoadingManager.showLoading()
+ val saveEleOrderRequest = SaveEleOrderRequest(taskOrderId = uiState.value.orderInfo?.taskId,
+ userOrderId = uiState.value.orderInfo?.userOrderId,
+ state = 3,
+ hasSuccess = eleWorkOrderBean?.isSuccess,
+ waitstaffSignPath = uiState.value.serverServicePeopleSignPath)
+ RetrofitHelper.getDefaultService().saveElectronOrder(saveEleOrderRequest)
+ .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
+ .subscribe(object : BaseObserver() {
+ override fun doSuccess(it : String?) {
+ LoadingManager.hideLoading()
+ if (eleWorkOrderBean != null) {
+ RoomHelper.db?.eleWorkOrderDao()
+ ?.update(eleWorkOrderBean.copy(orderWorkStatus = 3))
+ updateState(uiState.value.copy(eleWorkOrderBean = eleWorkOrderBean.copy(
+ orderWorkStatus = 3)))
+ }
+ success()
+ }
- override fun doFailure(code: Int, msg: String?) {
- LoadingManager.hideLoading()
- LogUtil.print("订单放弃 失败", msg ?: "")
- }
- })
- }
+ override fun doFailure(code : Int, msg : String?) {
+ LoadingManager.hideLoading()
+ LogUtil.print("订单放弃 失败", msg ?: "")
+ }
+ })
+ }
- private fun doGiveUpTask(request: GiveUpTaskRequest) {
- LoadingManager.showLoading()
- RetrofitHelper.getDefaultService().giveUpTask(request)
- .subscribeOn(Schedulers.io())
- .observeOn(Schedulers.io())
- .subscribe(object : BaseObserver() {
- override fun doSuccess(it: String?) {
- LoadingManager.hideLoading()
- updateState(uiState.value.copy(orderGiveUpSuccess = true))
- GlobalData.clearOrderCache(uiState.value.orderInfo?.taskId
- ?: uiState.value.taskId ?: 0)
- }
+ private fun doGiveUpTask(request : GiveUpTaskRequest) {
+ LoadingManager.showLoading()
+ RetrofitHelper.getDefaultService().giveUpTask(request).subscribeOn(Schedulers.io())
+ .observeOn(Schedulers.io()).subscribe(object : BaseObserver() {
+ override fun doSuccess(it : String?) {
+ LoadingManager.hideLoading()
+ updateState(uiState.value.copy(orderGiveUpSuccess = true))
+ GlobalData.clearOrderCache(uiState.value.orderInfo?.taskId
+ ?: uiState.value.taskId ?: 0)
+ }
- override fun doFailure(code: Int, msg: String?) {
- LoadingManager.hideLoading()
- ToastUtils.showLong(msg)
- }
- })
- }
+ override fun doFailure(code : Int, msg : String?) {
+ LoadingManager.hideLoading()
+ ToastUtils.showLong(msg)
+ }
+ })
+ }
- // TODO("订单放弃的推送需要再加个 userOrderId的参数,否则,无法请求到照片模版")
- private fun init() {
- if (uiState.value.orderInfo != null) {
- val eleWorkOrderBean = RoomHelper.db?.eleWorkOrderDao()?.getEleWorkOrder(uiState.value.orderInfo?.taskId
- ?: 0)
- val photoTemplateList = RoomHelper.db?.photoTemplateDao()
- ?.getOrderPhotoTemplateFromTaskNodeAndTaskId(18100, taskId = uiState.value.orderInfo?.taskId
- ?: 0)
- if (photoTemplateList.isNullOrEmpty()) {
- CommonMethod.fetchPhotoTemplate(uiState.value.orderInfo,
- success = {
- val data = RoomHelper.db?.photoTemplateDao()?.getOrderPhotoTemplateFromTaskNode(18100,
- uiState.value.orderInfo?.userOrderId ?: 0)
- updateState(uiState.value.copy(photoTemplateList = data, eleWorkOrderBean = eleWorkOrderBean))
- }, failed = {
- ToastUtils.showShort(it)
- })
- } else {
- updateState(uiState.value.copy(photoTemplateList = photoTemplateList, eleWorkOrderBean = eleWorkOrderBean))
- }
- return
- }
+ // TODO("订单放弃的推送需要再加个 userOrderId的参数,否则,无法请求到照片模版")
+ private fun init() {
+ if (uiState.value.orderInfo != null) {
+ val eleWorkOrderBean = RoomHelper.db?.eleWorkOrderDao()
+ ?.getEleWorkOrder(uiState.value.orderInfo?.taskId ?: 0)
+ val photoTemplateList = RoomHelper.db?.photoTemplateDao()
+ ?.getOrderPhotoTemplateFromTaskNodeAndTaskId(18100,
+ taskId = uiState.value.orderInfo?.taskId ?: 0)
+ if (photoTemplateList.isNullOrEmpty()) {
+ CommonMethod.fetchPhotoTemplate(uiState.value.orderInfo, success = {
+ val data = RoomHelper.db?.photoTemplateDao()?.getOrderPhotoTemplateFromTaskNode(
+ 18100,
+ uiState.value.orderInfo?.userOrderId ?: 0)
- val eleWorkOrderBean = RoomHelper.db?.eleWorkOrderDao()?.getEleWorkOrder(uiState.value.orderInfo?.taskId
- ?: 0)
- val photoTemplateList = RoomHelper.db?.photoTemplateDao()
- ?.getOrderPhotoTemplateFromTaskNodeAndTaskId(18100, taskId = uiState.value.orderInfo?.taskId
- ?: 0)
- if (photoTemplateList.isNullOrEmpty()) {
- CommonMethod.fetchPhotoTemplate(uiState.value.orderInfo,
- success = {
- val data = RoomHelper.db?.photoTemplateDao()?.getOrderPhotoTemplateFromTaskNodeAndTaskId(18100,
- uiState.value.taskId ?: 0)
- updateState(uiState.value.copy(photoTemplateList = data, eleWorkOrderBean = eleWorkOrderBean))
- }, failed = {
- ToastUtils.showShort(it)
- })
- } else {
- updateState(uiState.value.copy(photoTemplateList = photoTemplateList, eleWorkOrderBean = eleWorkOrderBean))
- }
+ updateState(uiState.value.copy(photoTemplateList = handlerData(data),
+ eleWorkOrderBean = eleWorkOrderBean))
+ }, failed = {
+ ToastUtils.showShort(it)
+ })
+ } else {
+ updateState(uiState.value.copy(photoTemplateList = handlerData(photoTemplateList),
+ eleWorkOrderBean = eleWorkOrderBean))
+ }
- }
+ LogUtil.print("订单放弃", "photoTemplateList==${photoTemplateList?.toJson()}")
+ return
+ }
+ val eleWorkOrderBean =
+ RoomHelper.db?.eleWorkOrderDao()?.getEleWorkOrder(uiState.value.orderInfo?.taskId ?: 0)
+ val photoTemplateList = RoomHelper.db?.photoTemplateDao()
+ ?.getOrderPhotoTemplateFromTaskNodeAndTaskId(18100,
+ taskId = uiState.value.orderInfo?.taskId ?: 0)
+ if (photoTemplateList.isNullOrEmpty()) {
+ CommonMethod.fetchPhotoTemplate(uiState.value.orderInfo, success = {
+ val data = RoomHelper.db?.photoTemplateDao()
+ ?.getOrderPhotoTemplateFromTaskNodeAndTaskId(18100, uiState.value.taskId ?: 0)
+ updateState(uiState.value.copy(photoTemplateList = handlerData(data),
+ eleWorkOrderBean = eleWorkOrderBean))
+ }, failed = {
+ ToastUtils.showShort(it)
+ })
+ } else {
+ updateState(uiState.value.copy(photoTemplateList = handlerData(photoTemplateList),
+ eleWorkOrderBean = eleWorkOrderBean))
+ }
- sealed class Action {
- data object Init : Action()
- data object UpdateTask : Action()
- data class UploadSign(val signPath: String?) : Action()
- data class UpdatePhotoTemplate(val photoTemplateInfo: PhotoTemplateInfo) : Action()
- data class UpdateState(val uiState: UiState) : Action()
- }
+ LogUtil.print("订单放弃", "photoTemplateList==${photoTemplateList?.toJson()}")
- data class UiState(
- val orderInfo: OrderInfo? = null,
- val taskId: Int? = null,
- val giveUpType: Int? = null,
- val serverServicePeopleSignPath: String? = null,
- val orderGiveUpSuccess: Boolean? = null,
- val isGoNextPageDialog: Boolean? = null,
- val eleWorkOrderBean: EleWorkOrderBean? = null,
- val photoTemplateList: List? = null)
+ }
+
+ private fun handlerData(originDta : List?) : List {
+ val list = arrayListOf()
+ originDta?.forEach {
+ if (it.showPingAnGiveUpPhoto == 1) {
+ if (uiState.value.orderInfo?.taskState == "VERIFY" || uiState.value.orderInfo?.taskState == "EXAMINE") {
+ list.add(it)
+ }
+ } else {
+ list.add(it)
+ }
+ }
+ return list
+ }
+
+ sealed class Action {
+ data object Init : Action()
+ data object UpdateTask : Action()
+ data class UploadSign(val signPath : String?) : Action()
+ data class UpdatePhotoTemplate(val photoTemplateInfo : PhotoTemplateInfo) : Action()
+ data class UpdateState(val uiState : UiState) : Action()
+ }
+
+ data class UiState(val orderInfo : OrderInfo? = null,
+ val taskId : Int? = null,
+ val giveUpType : Int? = null,
+ val serverServicePeopleSignPath : String? = null,
+ val orderGiveUpSuccess : Boolean? = null,
+ val isGoNextPageDialog : Boolean? = null,
+ val eleWorkOrderBean : EleWorkOrderBean? = null,
+ val photoTemplateList : List? = null)
}
\ No newline at end of file
diff --git a/servicing/src/main/java/com/za/ui/servicing/view/InServicingBottomView.kt b/servicing/src/main/java/com/za/ui/servicing/view/InServicingBottomView.kt
index 9fd7cd8..cacf1e7 100644
--- a/servicing/src/main/java/com/za/ui/servicing/view/InServicingBottomView.kt
+++ b/servicing/src/main/java/com/za/ui/servicing/view/InServicingBottomView.kt
@@ -22,6 +22,7 @@ import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
+import androidx.compose.ui.AbsoluteAlignment
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
@@ -227,7 +228,11 @@ fun InServicingHeadView(title : String,
actions = {
Box(modifier = Modifier
.size(39.dp)
- .clickable { showBottomSheetDialog.value = true }
+ .clickable {
+ OrderRequirementsActivity.goOrderRequirementsActivity(context,
+ orderInfo,
+ type = Const.InServiceSettingType.ORDER_DETAIL)
+ }
.padding(10.dp), contentAlignment = Alignment.Center) {
AsyncImage(model = R.drawable.sv_setting,
contentDescription = "",
@@ -239,6 +244,75 @@ fun InServicingHeadView(title : String,
}
}
+@Composable
+fun ServiceOperation(orderInfo : OrderInfo?) {
+ val context = LocalContext.current
+ val showNavigationDialog = remember { mutableStateOf(false) }
+ val showCallPhoneDialog = remember { mutableStateOf(false) }
+ val showCallServicePhoneDialog = remember { mutableStateOf(false) }
+
+ if (showNavigationDialog.value) {
+ StartNavigationView(orderInfo = orderInfo, dismiss = { showNavigationDialog.value = false })
+ }
+
+ if (showCallPhoneDialog.value) {
+ CommonDialog(cancelText = "取消",
+ confirmText = "确定",
+ title = "是否联系客户?",
+ cancelEnable = true,
+ cancel = {
+ showCallPhoneDialog.value = false
+ },
+ dismiss = { showCallPhoneDialog.value = false },
+ confirm = {
+ showCallPhoneDialog.value = false
+ context.callPhone(orderInfo?.customerPhone)
+ context.finish()
+ })
+ }
+
+ if (showCallServicePhoneDialog.value) {
+ CommonDialog(cancelText = "取消",
+ confirmText = "确定",
+ title = "是否联系中道客服?",
+ cancelEnable = true,
+ cancel = {
+ showCallServicePhoneDialog.value = false
+ },
+ dismiss = { showCallServicePhoneDialog.value = false },
+ confirm = {
+ showCallServicePhoneDialog.value = false
+ context.callPhone(orderInfo?.hotline)
+ context.finish()
+ })
+ }
+
+ Column(modifier = Modifier
+ .fillMaxWidth()
+ .padding(10.dp),
+ horizontalAlignment = AbsoluteAlignment.Right,
+ verticalArrangement = Arrangement.Top) {
+ Spacer(modifier = Modifier.height(2.dp))
+ AsyncImage(model = R.drawable.sv_service_phone,
+ contentDescription = "",
+ modifier = Modifier
+ .size(46.dp)
+ .clickable { showCallServicePhoneDialog.value = true })
+ Spacer(modifier = Modifier.height(2.dp))
+ AsyncImage(model = R.drawable.sv_customer,
+ contentDescription = "",
+ modifier = Modifier
+ .size(46.dp)
+ .clickable { showCallPhoneDialog.value = true })
+ Spacer(modifier = Modifier.height(2.dp))
+ AsyncImage(model = R.drawable.sv_navigation,
+ contentDescription = "",
+ modifier = Modifier
+ .size(46.dp)
+ .clickable { showNavigationDialog.value = true })
+ }
+}
+
@Composable
fun StartNavigationView(orderInfo : OrderInfo?, dismiss : () -> Unit) {
val context = LocalContext.current
diff --git a/servicing/src/main/java/com/za/ui/servicing/wait_to_start/WaitToStartActivity.kt b/servicing/src/main/java/com/za/ui/servicing/wait_to_start/WaitToStartActivity.kt
index 5592ce0..f6cd63b 100644
--- a/servicing/src/main/java/com/za/ui/servicing/wait_to_start/WaitToStartActivity.kt
+++ b/servicing/src/main/java/com/za/ui/servicing/wait_to_start/WaitToStartActivity.kt
@@ -32,6 +32,7 @@ import androidx.compose.material3.rememberStandardBottomSheetState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.remember
+import androidx.compose.ui.AbsoluteAlignment
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
@@ -69,6 +70,7 @@ import com.za.ext.navigationActivity
import com.za.servicing.R
import com.za.ui.servicing.inservice_people_confirm.ServicePeopleConfirmActivity
import com.za.ui.servicing.view.InServicingHeadView
+import com.za.ui.servicing.view.ServiceOperation
class WaitToStartActivity : BaseActivity() {
@@ -334,9 +336,7 @@ fun WaitToStartScreen(vm : WaitToStartVm = viewModel()) {
Box(modifier = Modifier
.fillMaxSize()
.padding(paddingValues)) {
- AndroidView(modifier = Modifier
- .fillMaxSize()
- .padding(bottom = 20.dp), factory = {
+ AndroidView(modifier = Modifier.fillMaxSize(), factory = {
AMapLocationClient.updatePrivacyShow(context, true, true)
AMapLocationClient.updatePrivacyAgree(context, true)
mapView.apply {
@@ -389,7 +389,7 @@ fun WaitToStartScreen(vm : WaitToStartVm = viewModel()) {
if (order.distLat != null && order.distLat != 0.0 && order.distLng != null && order.distLng != 0.0 && GlobalData.currentLocation != null) {
mapView.map.addMarker(MarkerOptions().position(LatLng(order.distLat !!,
order.distLng !!)).title("目的地")
- .icon(BitmapDescriptorFactory.fromResource(R.mipmap.sv_dist_map))
+ .icon(ImageUtil.vectorToBitmap(context, R.drawable.sv_map_dist))
.anchor(0.5f, 0.5f))
}
}
@@ -425,7 +425,8 @@ fun WaitToStartScreen(vm : WaitToStartVm = viewModel()) {
}
}
})
+
+ ServiceOperation(orderInfo = uiState.value.orderInfo)
}
}
}
-
diff --git a/servicing/src/main/java/com/za/ui/servicing/wait_to_start/WaitToStartVm.kt b/servicing/src/main/java/com/za/ui/servicing/wait_to_start/WaitToStartVm.kt
index bc046a5..92bcb55 100644
--- a/servicing/src/main/java/com/za/ui/servicing/wait_to_start/WaitToStartVm.kt
+++ b/servicing/src/main/java/com/za/ui/servicing/wait_to_start/WaitToStartVm.kt
@@ -10,6 +10,7 @@ import com.amap.api.services.route.DriveRouteResult
import com.amap.api.services.route.RideRouteResult
import com.amap.api.services.route.RouteSearch
import com.amap.api.services.route.WalkRouteResult
+import com.blankj.utilcode.util.ActivityUtils
import com.blankj.utilcode.util.ToastUtils
import com.za.base.IServicingVm
import com.za.base.view.LoadingManager
@@ -18,6 +19,7 @@ import com.za.bean.request.UpdateTaskBean
import com.za.bean.request.UpdateTaskRequest
import com.za.common.GlobalData
import com.za.common.log.LogUtil
+import com.za.common.util.ImageUtil
import com.za.ext.toJson
import com.za.net.CommonMethod
import com.za.service.location.ZdLocationManager
@@ -106,9 +108,9 @@ class WaitToStartVm : IServicingVm(
val destMarker =
MarkerOptions().position(LatLng(orderInfo.distLat !!, orderInfo.distLng !!))
- .title(orderInfo.distAddress).snippet("目的地")
- .icon(BitmapDescriptorFactory.fromResource(R.mipmap.sv_dist_map))
- .anchor(0.5f, 0.5f).zIndex(2f).visible(true)
+ .title(orderInfo.distAddress).snippet("目的地").icon(ImageUtil.vectorToBitmap(
+ ActivityUtils.getTopActivity(),
+ R.drawable.sv_map_dist)).anchor(0.5f, 0.5f).zIndex(2f).visible(true)
markers.add(destMarker)
}
@@ -169,17 +171,16 @@ class WaitToStartVm : IServicingVm(
private var timerJob : Job? = null
- private fun startTimer() {
-// timerJob?.cancel()
-// timerJob = viewModelScope.launch {
-// while (isActive) { // 计算从当前位置到目标点的距离和到达时间
-// val (distance, arrivalTime) = calculateRemainingDistance()
-// _uiState.update {
-// it.copy(remainingDistance = distance, estimatedArrivalTime = arrivalTime)
-// }
-// delay(1000) // 每秒更新一次
-// }
-// }
+ private fun startTimer() { // timerJob?.cancel()
+ // timerJob = viewModelScope.launch {
+ // while (isActive) { // 计算从当前位置到目标点的距离和到达时间
+ // val (distance, arrivalTime) = calculateRemainingDistance()
+ // _uiState.update {
+ // it.copy(remainingDistance = distance, estimatedArrivalTime = arrivalTime)
+ // }
+ // delay(1000) // 每秒更新一次
+ // }
+ // }
}
private fun calculateRemainingDistance() : Pair {
diff --git a/servicing/src/main/res/drawable/sv_customer.xml b/servicing/src/main/res/drawable/sv_customer.xml
new file mode 100644
index 0000000..eb490f8
--- /dev/null
+++ b/servicing/src/main/res/drawable/sv_customer.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
diff --git a/servicing/src/main/res/drawable/sv_map_dist.xml b/servicing/src/main/res/drawable/sv_map_dist.xml
new file mode 100644
index 0000000..caf7526
--- /dev/null
+++ b/servicing/src/main/res/drawable/sv_map_dist.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/servicing/src/main/res/drawable/sv_navigation.xml b/servicing/src/main/res/drawable/sv_navigation.xml
index ddea9a7..f49499b 100644
--- a/servicing/src/main/res/drawable/sv_navigation.xml
+++ b/servicing/src/main/res/drawable/sv_navigation.xml
@@ -1,9 +1,30 @@
+ android:width="46dp"
+ android:height="46dp"
+ android:viewportWidth="46"
+ android:viewportHeight="46">
+ android:pathData="m9,3h28c3.324,0 6,2.676 6,6v28c0,3.324 -2.676,6 -6,6L9,43c-3.324,0 -6,-2.676 -6,-6v-28c0,-3.324 2.676,-6 6,-6z"
+ android:strokeWidth="1"
+ android:fillColor="#000000"
+ android:fillType="evenOdd"
+ android:strokeColor="#00000000"/>
+
+
+
diff --git a/servicing/src/main/res/drawable/sv_order_report.xml b/servicing/src/main/res/drawable/sv_order_report.xml
new file mode 100644
index 0000000..ba10c56
--- /dev/null
+++ b/servicing/src/main/res/drawable/sv_order_report.xml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
diff --git a/servicing/src/main/res/drawable/sv_service_phone.xml b/servicing/src/main/res/drawable/sv_service_phone.xml
new file mode 100644
index 0000000..e373e6e
--- /dev/null
+++ b/servicing/src/main/res/drawable/sv_service_phone.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
diff --git a/servicing/src/main/res/layout-land/sign_activity_grid_paint.xml b/servicing/src/main/res/layout-land/sign_activity_grid_paint.xml
index 0e350a4..fa0535e 100644
--- a/servicing/src/main/res/layout-land/sign_activity_grid_paint.xml
+++ b/servicing/src/main/res/layout-land/sign_activity_grid_paint.xml
@@ -1,6 +1,7 @@
diff --git a/servicing/src/main/res/layout/floating_view_layout.xml b/servicing/src/main/res/layout/floating_view_layout.xml
index 3a1296a..bdbc57d 100644
--- a/servicing/src/main/res/layout/floating_view_layout.xml
+++ b/servicing/src/main/res/layout/floating_view_layout.xml
@@ -8,5 +8,5 @@
android:id="@+id/floating_image"
android:layout_width="64dp"
android:layout_height="64dp"
- android:src="@mipmap/ic_customer" />
+ android:src="@drawable/sv_order_report" />
\ No newline at end of file
diff --git a/servicing/src/main/res/layout/sign_activity_grid_paint.xml b/servicing/src/main/res/layout/sign_activity_grid_paint.xml
index 4ae6067..120f168 100644
--- a/servicing/src/main/res/layout/sign_activity_grid_paint.xml
+++ b/servicing/src/main/res/layout/sign_activity_grid_paint.xml
@@ -2,9 +2,10 @@
@@ -46,7 +47,7 @@
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:gravity="center"
- android:text="请务必规范书写,否则造成的损失由您承担"
+ android:text="请务必逐字正楷填写您的名字"
android:textColor="@color/red"
android:textSize="15.dp"
android:textStyle="bold" />
@@ -55,7 +56,6 @@
android:id="@+id/bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
android:layout_margin="10dp"
android:background="@drawable/sign_bg_shape"
android:gravity="center_horizontal"
@@ -72,8 +72,8 @@
android:id="@+id/circle_container"
android:layout_width="@dimen/sign_tool_icon_size"
android:layout_height="@dimen/sign_tool_icon_size"
- android:visibility="gone"
- android:layout_weight="1">
+ android:layout_weight="1"
+ android:visibility="gone">
#0cba02
#f9d403
#027de9
- #0c53ab
+ #FF3D4B7C
#f5f5f5
#7fffffff