refactor(servicing): 重构司机信息获取逻辑
- 更新 Api 定义,将 GeneralInfo 请求的返回类型改为 DriverInfoBean- 重构 GlobalData 类,使用 GlobalLocalData 类封装本地数据操作 - 优化 ConfirmEleScreen组件,增加 ConfirmEleCheckBoxItem复用组件 - 调整签名视图的字体大小- 移除 VerifyOrderActivity 中的冗余代码 - 更新 ZDManager 中的 MMKV 初始化逻辑
This commit is contained in:
@ -27,7 +27,7 @@ class MainActivity : ComponentActivity() {
|
|||||||
.fillMaxSize()
|
.fillMaxSize()
|
||||||
.clickable {
|
.clickable {
|
||||||
val uri =
|
val uri =
|
||||||
"zd.assist://app?taskCode=ZD250417100404&driverName=宋志领&driverPhone=17630035658&rescueVehicle=沪88888".toUri()
|
"zd.assist://app?taskCode=ZD250422100056&driverName=宋志领&driverPhone=17630035658&rescueVehicle=沪88888".toUri()
|
||||||
val intent = Intent(Intent.ACTION_VIEW, uri)
|
val intent = Intent(Intent.ACTION_VIEW, uri)
|
||||||
startActivity(intent)
|
startActivity(intent)
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,8 @@ plugins {
|
|||||||
alias(libs.plugins.jetbrains.kotlin.android)
|
alias(libs.plugins.jetbrains.kotlin.android)
|
||||||
id 'com.google.devtools.ksp'
|
id 'com.google.devtools.ksp'
|
||||||
id 'maven-publish'
|
id 'maven-publish'
|
||||||
|
// kotlin 序列化注解
|
||||||
|
id 'kotlin-parcelize'
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
|
@ -9,7 +9,7 @@ import com.za.common.log.LogUtil
|
|||||||
import com.za.room.RoomHelper
|
import com.za.room.RoomHelper
|
||||||
import com.za.room.db.user.DriverInfoBean
|
import com.za.room.db.user.DriverInfoBean
|
||||||
|
|
||||||
object GlobalData {
|
object GlobalData : GlobalLocalData() {
|
||||||
lateinit var application : Application
|
lateinit var application : Application
|
||||||
private val mmkv : MMKV by lazy { MMKV.defaultMMKV() }
|
private val mmkv : MMKV by lazy { MMKV.defaultMMKV() }
|
||||||
var activityCount : Int = 0
|
var activityCount : Int = 0
|
||||||
@ -45,26 +45,21 @@ object GlobalData {
|
|||||||
//新订单是否已经被处理
|
//新订单是否已经被处理
|
||||||
var isHandlerNewOrder : Boolean? = false
|
var isHandlerNewOrder : Boolean? = false
|
||||||
|
|
||||||
private val lock = Any()
|
var driverInfoBean : DriverInfoBean? = null
|
||||||
var driverInfoBean : DriverInfoBean?
|
|
||||||
get() {
|
get() {
|
||||||
synchronized(lock) {
|
if (field == null) {
|
||||||
val driverInfoBean =
|
field = localDriverInfoBean
|
||||||
mmkv.decodeParcelable("driverInfoBean", DriverInfoBean::class.java)
|
|
||||||
LogUtil.print("driverInfo get", "driverInfoBean = $driverInfoBean")
|
|
||||||
return driverInfoBean
|
|
||||||
}
|
}
|
||||||
|
LogUtil.print("get driverInfoBean", "获取司机信息: $field")
|
||||||
|
return field
|
||||||
}
|
}
|
||||||
set(value) {
|
set(value) {
|
||||||
synchronized(lock) {
|
localDriverInfoBean = value
|
||||||
mmkv.encode("driverInfoBean", value)
|
field = value
|
||||||
if (value != null) {
|
LogUtil.print("set driverInfoBean", "司机信息: $field")
|
||||||
lastLoginBean = value
|
|
||||||
}
|
|
||||||
LogUtil.print("driverInfo set", "driverInfoBean = $value")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var lastLoginBean : DriverInfoBean? = null
|
var lastLoginBean : DriverInfoBean? = null
|
||||||
get() {
|
get() {
|
||||||
val driverInfoBean = mmkv.decodeParcelable("lastLoginBean", DriverInfoBean::class.java)
|
val driverInfoBean = mmkv.decodeParcelable("lastLoginBean", DriverInfoBean::class.java)
|
||||||
@ -85,17 +80,16 @@ object GlobalData {
|
|||||||
field = value
|
field = value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var currentOrder : OrderInfo? = null
|
var currentOrder : OrderInfo? = null
|
||||||
get() {
|
get() {
|
||||||
return mmkv.decodeParcelable("currentOrder", OrderInfo::class.java)
|
if (field == null) {
|
||||||
|
field = localCurrentOrder
|
||||||
|
}
|
||||||
|
return field
|
||||||
}
|
}
|
||||||
set(value) {
|
set(value) {
|
||||||
mmkv.encode("currentOrder", value)
|
localCurrentOrder = value
|
||||||
if (RoomHelper.db?.orderDao()?.getCurrentOrder() == null && value != null) {
|
|
||||||
RoomHelper.db?.orderDao()?.insertOrder(value)
|
|
||||||
} else if (value != null) {
|
|
||||||
RoomHelper.db?.orderDao()?.update(value)
|
|
||||||
}
|
|
||||||
field = value
|
field = value
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -133,5 +127,4 @@ object GlobalData {
|
|||||||
fun clearOrderCache(taskId : Int) {
|
fun clearOrderCache(taskId : Int) {
|
||||||
RoomHelper.clearOrderFromTaskCode(taskId = taskId)
|
RoomHelper.clearOrderFromTaskCode(taskId = taskId)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
49
servicing/src/main/java/com/za/common/GlobalLocalData.kt
Normal file
49
servicing/src/main/java/com/za/common/GlobalLocalData.kt
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
package com.za.common
|
||||||
|
|
||||||
|
import com.tencent.mmkv.MMKV
|
||||||
|
import com.za.bean.db.order.OrderInfo
|
||||||
|
import com.za.common.GlobalData.lastLoginBean
|
||||||
|
import com.za.common.log.LogUtil
|
||||||
|
import com.za.room.RoomHelper
|
||||||
|
import com.za.room.db.user.DriverInfoBean
|
||||||
|
|
||||||
|
open class GlobalLocalData {
|
||||||
|
var localDriverInfoBean : DriverInfoBean?
|
||||||
|
get() {
|
||||||
|
return try {
|
||||||
|
val driverInfo = MMKV.defaultMMKV()
|
||||||
|
.decodeParcelable("driverInfoBean", DriverInfoBean::class.java)
|
||||||
|
LogUtil.print("local_driverInfoBean", "获取司机信息: $driverInfo")
|
||||||
|
driverInfo
|
||||||
|
} catch (e : Exception) {
|
||||||
|
LogUtil.print("local_driverInfoBean", "获取司机信息失败: ${e.message}")
|
||||||
|
null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set(value) {
|
||||||
|
try {
|
||||||
|
MMKV.defaultMMKV().encode("driverInfoBean", value)
|
||||||
|
if (value != null) {
|
||||||
|
lastLoginBean = value
|
||||||
|
}
|
||||||
|
LogUtil.print("set local_driverInfoBean", "保存司机信息: $value")
|
||||||
|
} catch (e : Exception) {
|
||||||
|
LogUtil.print("set local_driverInfoBean", "保存司机信息失败: ${e.message}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var localCurrentOrder : OrderInfo? = null
|
||||||
|
get() {
|
||||||
|
return MMKV.defaultMMKV().decodeParcelable("currentOrder", OrderInfo::class.java)
|
||||||
|
}
|
||||||
|
set(value) {
|
||||||
|
MMKV.defaultMMKV().encode("currentOrder", value)
|
||||||
|
if (RoomHelper.db?.orderDao()?.getCurrentOrder() == null && value != null) {
|
||||||
|
RoomHelper.db?.orderDao()?.insertOrder(value)
|
||||||
|
} else if (value != null) {
|
||||||
|
RoomHelper.db?.orderDao()?.update(value)
|
||||||
|
}
|
||||||
|
field = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -23,8 +23,7 @@ object ZDManager {
|
|||||||
AppConfig.crm1()
|
AppConfig.crm1()
|
||||||
}
|
}
|
||||||
GlobalData.application = application // 在 Application 中初始化 MMKV,所有进程共享同一存储路径
|
GlobalData.application = application // 在 Application 中初始化 MMKV,所有进程共享同一存储路径
|
||||||
val rootDir = application.filesDir.absolutePath + "/mmkv"
|
MMKV.initialize(application)
|
||||||
MMKV.initialize(application, rootDir)
|
|
||||||
Bugly.init(application, "6972a6b56d", true)
|
Bugly.init(application, "6972a6b56d", true)
|
||||||
LogUtil.init(application)
|
LogUtil.init(application)
|
||||||
RoomHelper.init(application)
|
RoomHelper.init(application)
|
||||||
|
@ -80,6 +80,7 @@ import com.za.bean.request.VehicleRepairPointMatcherListRequest
|
|||||||
import com.za.bean.request.VerifyCodeRequest
|
import com.za.bean.request.VerifyCodeRequest
|
||||||
import com.za.bean.request.VerifyCodeResponse
|
import com.za.bean.request.VerifyCodeResponse
|
||||||
import com.za.call.ContactRecordRequest
|
import com.za.call.ContactRecordRequest
|
||||||
|
import com.za.room.db.user.DriverInfoBean
|
||||||
import com.za.water_marker.bean.MyWaterMarkerTemplateBean
|
import com.za.water_marker.bean.MyWaterMarkerTemplateBean
|
||||||
import com.za.water_marker.bean.WaterMarkerRequestBean
|
import com.za.water_marker.bean.WaterMarkerRequestBean
|
||||||
import io.reactivex.rxjava3.core.Observable
|
import io.reactivex.rxjava3.core.Observable
|
||||||
@ -100,7 +101,7 @@ interface ApiService {
|
|||||||
fun newUpdateVehicleState(@Body info : UpdateVehicleStateRequest) : Observable<BaseResponse<String>>
|
fun newUpdateVehicleState(@Body info : UpdateVehicleStateRequest) : Observable<BaseResponse<String>>
|
||||||
|
|
||||||
@POST("/driverApp/v2/user/generalInfo")
|
@POST("/driverApp/v2/user/generalInfo")
|
||||||
fun generalInfo(@Body info : GeneralInfoRequest) : Observable<BaseResponse<GeneralInfo>>
|
fun generalInfo(@Body info : GeneralInfoRequest) : Observable<BaseResponse<DriverInfoBean>>
|
||||||
|
|
||||||
@POST("/driverApp/base/appVersion")
|
@POST("/driverApp/base/appVersion")
|
||||||
fun getUpdate(@Body versionRequest : UpdateVersionRequest) : Observable<BaseResponse<UpdateVersionBean>>
|
fun getUpdate(@Body versionRequest : UpdateVersionRequest) : Observable<BaseResponse<UpdateVersionBean>>
|
||||||
|
@ -5,7 +5,6 @@ import android.graphics.BitmapFactory
|
|||||||
import com.blankj.utilcode.util.ActivityUtils
|
import com.blankj.utilcode.util.ActivityUtils
|
||||||
import com.blankj.utilcode.util.ImageUtils
|
import com.blankj.utilcode.util.ImageUtils
|
||||||
import com.za.base.Const
|
import com.za.base.Const
|
||||||
import com.za.bean.GeneralInfo
|
|
||||||
import com.za.bean.ImageBean
|
import com.za.bean.ImageBean
|
||||||
import com.za.bean.JpushBean
|
import com.za.bean.JpushBean
|
||||||
import com.za.bean.NewOrderRequestBean
|
import com.za.bean.NewOrderRequestBean
|
||||||
@ -118,7 +117,7 @@ object CommonMethod {
|
|||||||
private var lastFetchGenerateInfoTime : Long = 0L
|
private var lastFetchGenerateInfoTime : Long = 0L
|
||||||
fun getGenerateInfo(vehicleId : Int? = null,
|
fun getGenerateInfo(vehicleId : Int? = null,
|
||||||
userId : Int? = null,
|
userId : Int? = null,
|
||||||
success : (GeneralInfo) -> Unit = {},
|
success : (DriverInfoBean) -> Unit = {},
|
||||||
failed : (String?) -> Unit = {}) {
|
failed : (String?) -> Unit = {}) {
|
||||||
val generalInfoRequest =
|
val generalInfoRequest =
|
||||||
GeneralInfoRequest(vehicleId = vehicleId ?: GlobalData.driverInfoBean?.vehicleId,
|
GeneralInfoRequest(vehicleId = vehicleId ?: GlobalData.driverInfoBean?.vehicleId,
|
||||||
@ -126,52 +125,20 @@ object CommonMethod {
|
|||||||
deviceId = DeviceUtil.getAndroidId(ActivityUtils.getTopActivity()))
|
deviceId = DeviceUtil.getAndroidId(ActivityUtils.getTopActivity()))
|
||||||
RetrofitHelper.getDefaultService().generalInfo(generalInfoRequest)
|
RetrofitHelper.getDefaultService().generalInfo(generalInfoRequest)
|
||||||
.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
|
.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe(object : BaseObserver<GeneralInfo>() {
|
.subscribe(object : BaseObserver<DriverInfoBean>() {
|
||||||
override fun doSuccess(it : GeneralInfo?) {
|
override fun doSuccess(it : DriverInfoBean?) {
|
||||||
if (it == null) {
|
if (it == null) {
|
||||||
failed("获取车辆信息失败")
|
failed("获取车辆信息失败")
|
||||||
LogUtil.print("getGenerateInfo", "获取车辆信息失败")
|
LogUtil.print("getGenerateInfo", "获取车辆信息失败")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (GlobalData.driverInfoBean != null && (System.currentTimeMillis() - lastFetchGenerateInfoTime < 1000 * 10)) {
|
if (GlobalData.driverInfoBean != null && (System.currentTimeMillis() - lastFetchGenerateInfoTime < 1000 * 10)) {
|
||||||
LogUtil.print("getGenerateInfo", "获取车辆信息成功,但是时间间隔小于10秒,不更新车辆信息")
|
LogUtil.print("getGenerateInfo",
|
||||||
|
"获取车辆信息成功,但是时间间隔小于10秒,不更新车辆信息")
|
||||||
success(it)
|
success(it)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (GlobalData.driverInfoBean == null) {
|
GlobalData.driverInfoBean=it
|
||||||
GlobalData.driverInfoBean = DriverInfoBean(vehicleId = it.vehicleId,
|
|
||||||
vehicleName = it.vehicleName,
|
|
||||||
userName = it.userName,
|
|
||||||
loginLogId = it.loginLogId,
|
|
||||||
userPhone = it.userPhone,
|
|
||||||
plateNumber = it.plateNumber,
|
|
||||||
vehicleState = it.vehicleState,
|
|
||||||
supplierType = it.supplierType,
|
|
||||||
userPortrait = it.userPortrait,
|
|
||||||
userId = it.userId,
|
|
||||||
supplierId = it.supplierId,
|
|
||||||
deviceId = it.deviceId,
|
|
||||||
supplierName = it.supplierName,
|
|
||||||
authStatus = it.authStatus,
|
|
||||||
serviceList = it.serviceList?.toString())
|
|
||||||
} else {
|
|
||||||
GlobalData.driverInfoBean =
|
|
||||||
GlobalData.driverInfoBean?.copy(vehicleId = it.vehicleId,
|
|
||||||
vehicleName = it.vehicleName,
|
|
||||||
userName = it.userName,
|
|
||||||
userPhone = it.userPhone,
|
|
||||||
plateNumber = it.plateNumber,
|
|
||||||
vehicleState = it.vehicleState,
|
|
||||||
supplierType = it.supplierType,
|
|
||||||
userPortrait = it.userPortrait,
|
|
||||||
userId = it.userId,
|
|
||||||
loginLogId = it.loginLogId,
|
|
||||||
supplierId = it.supplierId,
|
|
||||||
deviceId = it.deviceId,
|
|
||||||
supplierName = it.supplierName,
|
|
||||||
authStatus = it.authStatus,
|
|
||||||
serviceList = it.serviceList?.toString())
|
|
||||||
}
|
|
||||||
lastFetchGenerateInfoTime = System.currentTimeMillis()
|
lastFetchGenerateInfoTime = System.currentTimeMillis()
|
||||||
LogUtil.print("GlobalData.driverInfoBean",
|
LogUtil.print("GlobalData.driverInfoBean",
|
||||||
"${GlobalData.driverInfoBean?.toJson()}}")
|
"${GlobalData.driverInfoBean?.toJson()}}")
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
package com.za.room.db.user
|
package com.za.room.db.user
|
||||||
|
|
||||||
import android.os.Parcel
|
|
||||||
import android.os.Parcelable
|
import android.os.Parcelable
|
||||||
|
import kotlinx.parcelize.Parcelize
|
||||||
|
|
||||||
|
@Parcelize
|
||||||
data class DriverInfoBean(
|
data class DriverInfoBean(
|
||||||
val userId : Int? = null, //用户id
|
val userId : Int? = null, //用户id
|
||||||
val userName : String? = null, //用户姓名
|
val userName : String? = null, //用户姓名
|
||||||
@ -14,7 +15,7 @@ data class DriverInfoBean(
|
|||||||
val supplierName : String? = null, //经销商名称
|
val supplierName : String? = null, //经销商名称
|
||||||
val supplierType : Int? = null, //经销商类型 1子公司 2供应商
|
val supplierType : Int? = null, //经销商类型 1子公司 2供应商
|
||||||
val loginLogId : Int? = null,
|
val loginLogId : Int? = null,
|
||||||
val serviceList : String? = null, //车辆服务列表
|
val serviceList : List<String>? = null, //车辆服务列表
|
||||||
val assistUserCode : String? = null,
|
val assistUserCode : String? = null,
|
||||||
val authStatus : Int? = null, // 0 未认证 1 已认证
|
val authStatus : Int? = null, // 0 未认证 1 已认证
|
||||||
val vehicleId : Int? = null,
|
val vehicleId : Int? = null,
|
||||||
@ -22,59 +23,4 @@ data class DriverInfoBean(
|
|||||||
val vehicleState : Int? = null, //车辆状态 0 空闲 1 忙碌
|
val vehicleState : Int? = null, //车辆状态 0 空闲 1 忙碌
|
||||||
val plateNumber : String? = null, //车牌号
|
val plateNumber : String? = null, //车牌号
|
||||||
val deviceId : String? = null,
|
val deviceId : String? = null,
|
||||||
) : Parcelable {
|
) : Parcelable
|
||||||
constructor(parcel : Parcel) : this(parcel.readValue(Int::class.java.classLoader) as? Int,
|
|
||||||
parcel.readString(),
|
|
||||||
parcel.readString(),
|
|
||||||
parcel.readString(),
|
|
||||||
parcel.readString(),
|
|
||||||
parcel.readString(),
|
|
||||||
parcel.readValue(Int::class.java.classLoader) as? Int,
|
|
||||||
parcel.readString(),
|
|
||||||
parcel.readValue(Int::class.java.classLoader) as? Int,
|
|
||||||
parcel.readValue(Int::class.java.classLoader) as? Int,
|
|
||||||
parcel.readString(),
|
|
||||||
parcel.readString(),
|
|
||||||
parcel.readValue(Int::class.java.classLoader) as? Int,
|
|
||||||
parcel.readValue(Int::class.java.classLoader) as? Int,
|
|
||||||
parcel.readString(),
|
|
||||||
parcel.readValue(Int::class.java.classLoader) as? Int,
|
|
||||||
parcel.readString(),
|
|
||||||
parcel.readString()) {
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun writeToParcel(parcel : Parcel, flags : Int) {
|
|
||||||
parcel.writeValue(userId)
|
|
||||||
parcel.writeString(userName)
|
|
||||||
parcel.writeString(userPhone)
|
|
||||||
parcel.writeString(userPortrait)
|
|
||||||
parcel.writeString(rongyunToken)
|
|
||||||
parcel.writeString(logTime)
|
|
||||||
parcel.writeValue(supplierId)
|
|
||||||
parcel.writeString(supplierName)
|
|
||||||
parcel.writeValue(supplierType)
|
|
||||||
parcel.writeValue(loginLogId)
|
|
||||||
parcel.writeString(serviceList)
|
|
||||||
parcel.writeString(assistUserCode)
|
|
||||||
parcel.writeValue(authStatus)
|
|
||||||
parcel.writeValue(vehicleId)
|
|
||||||
parcel.writeString(vehicleName)
|
|
||||||
parcel.writeValue(vehicleState)
|
|
||||||
parcel.writeString(plateNumber)
|
|
||||||
parcel.writeString(deviceId)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun describeContents() : Int {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object CREATOR : Parcelable.Creator<DriverInfoBean> {
|
|
||||||
override fun createFromParcel(parcel : Parcel) : DriverInfoBean {
|
|
||||||
return DriverInfoBean(parcel)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun newArray(size : Int) : Array<DriverInfoBean?> {
|
|
||||||
return arrayOfNulls(size)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -4,12 +4,12 @@ import androidx.compose.animation.AnimatedVisibility
|
|||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.basicMarquee
|
import androidx.compose.foundation.basicMarquee
|
||||||
import androidx.compose.foundation.border
|
import androidx.compose.foundation.border
|
||||||
import androidx.compose.foundation.clickable
|
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.Spacer
|
import androidx.compose.foundation.layout.Spacer
|
||||||
|
import androidx.compose.foundation.layout.fillMaxHeight
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
@ -24,14 +24,19 @@ import androidx.compose.foundation.rememberScrollState
|
|||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.foundation.text.KeyboardOptions
|
import androidx.compose.foundation.text.KeyboardOptions
|
||||||
import androidx.compose.foundation.verticalScroll
|
import androidx.compose.foundation.verticalScroll
|
||||||
|
import androidx.compose.material3.Checkbox
|
||||||
|
import androidx.compose.material3.CheckboxDefaults
|
||||||
|
import androidx.compose.material3.HorizontalDivider
|
||||||
import androidx.compose.material3.OutlinedTextField
|
import androidx.compose.material3.OutlinedTextField
|
||||||
import androidx.compose.material3.OutlinedTextFieldDefaults
|
import androidx.compose.material3.OutlinedTextFieldDefaults
|
||||||
import androidx.compose.material3.Scaffold
|
import androidx.compose.material3.Scaffold
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
|
import androidx.compose.material3.VerticalDivider
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.draw.alpha
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.layout.ContentScale
|
import androidx.compose.ui.layout.ContentScale
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
@ -39,6 +44,7 @@ import androidx.compose.ui.text.TextStyle
|
|||||||
import androidx.compose.ui.text.font.FontWeight
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
import androidx.compose.ui.text.input.KeyboardType
|
import androidx.compose.ui.text.input.KeyboardType
|
||||||
import androidx.compose.ui.text.style.TextDecoration
|
import androidx.compose.ui.text.style.TextDecoration
|
||||||
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.unit.sp
|
import androidx.compose.ui.unit.sp
|
||||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||||
@ -48,7 +54,9 @@ import com.blankj.utilcode.util.FileUtils
|
|||||||
import com.blankj.utilcode.util.TimeUtils
|
import com.blankj.utilcode.util.TimeUtils
|
||||||
import com.blankj.utilcode.util.ToastUtils
|
import com.blankj.utilcode.util.ToastUtils
|
||||||
import com.za.base.Const
|
import com.za.base.Const
|
||||||
|
import com.za.base.theme.black10
|
||||||
import com.za.base.theme.black65
|
import com.za.base.theme.black65
|
||||||
|
import com.za.base.theme.buttonBgColor
|
||||||
import com.za.base.theme.headBgColor
|
import com.za.base.theme.headBgColor
|
||||||
import com.za.base.view.CommonButton
|
import com.za.base.view.CommonButton
|
||||||
import com.za.base.view.CommonDialog
|
import com.za.base.view.CommonDialog
|
||||||
@ -65,6 +73,7 @@ import com.za.ui.view.SignatureView
|
|||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.math.ceil
|
import kotlin.math.ceil
|
||||||
|
|
||||||
|
@Preview
|
||||||
@Composable
|
@Composable
|
||||||
fun ConfirmEleScreen(vm : ConfirmEleVm = viewModel()) {
|
fun ConfirmEleScreen(vm : ConfirmEleVm = viewModel()) {
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
@ -133,12 +142,14 @@ fun ConfirmEleScreen(vm : ConfirmEleVm = viewModel()) {
|
|||||||
confirm = {
|
confirm = {
|
||||||
if (uiState.value.eleWorkOrderBean?.localServicePeopleSignPath.isNullOrEmpty()) {
|
if (uiState.value.eleWorkOrderBean?.localServicePeopleSignPath.isNullOrEmpty()) {
|
||||||
ToastUtils.showShort("请先进行签名")
|
ToastUtils.showShort("请先进行签名")
|
||||||
vm.dispatch(ConfirmEleVm.Action.UpdateState(uiState.value.copy(showServicePeopleSignDialog = false)))
|
vm.dispatch(ConfirmEleVm.Action.UpdateState(uiState.value.copy(
|
||||||
|
showServicePeopleSignDialog = false)))
|
||||||
return@CommonDialog
|
return@CommonDialog
|
||||||
}
|
}
|
||||||
File(uiState.value.eleWorkOrderBean?.localServicePeopleSignPath ?: "").copyTo(File(
|
File(uiState.value.eleWorkOrderBean?.localServicePeopleSignPath ?: "").copyTo(File(
|
||||||
AppFileManager.getDriverSignPath(context)), true)
|
AppFileManager.getDriverSignPath(context)), true)
|
||||||
vm.dispatch(ConfirmEleVm.Action.UpdateState(uiState.value.copy(showServicePeopleSignDialog = false)))
|
vm.dispatch(ConfirmEleVm.Action.UpdateState(uiState.value.copy(
|
||||||
|
showServicePeopleSignDialog = false)))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -162,9 +173,8 @@ fun ConfirmEleScreen(vm : ConfirmEleVm = viewModel()) {
|
|||||||
Column(modifier = Modifier
|
Column(modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.background(Color.White)
|
.background(Color.White)
|
||||||
.padding(horizontal = 16.dp, vertical = 10.dp)) {
|
.padding(horizontal = 16.dp)) {
|
||||||
Row(verticalAlignment = Alignment.CenterVertically,
|
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||||
modifier = Modifier.padding(bottom = 8.dp)) {
|
|
||||||
Text(text = "*",
|
Text(text = "*",
|
||||||
fontWeight = FontWeight.Bold,
|
fontWeight = FontWeight.Bold,
|
||||||
color = Color.Red,
|
color = Color.Red,
|
||||||
@ -174,46 +184,23 @@ fun ConfirmEleScreen(vm : ConfirmEleVm = viewModel()) {
|
|||||||
fontWeight = FontWeight.Medium,
|
fontWeight = FontWeight.Medium,
|
||||||
color = Color.Black,
|
color = Color.Black,
|
||||||
fontSize = 15.sp)
|
fontSize = 15.sp)
|
||||||
}
|
|
||||||
Row(modifier = Modifier.fillMaxWidth(),
|
|
||||||
horizontalArrangement = Arrangement.spacedBy(24.dp)) {
|
|
||||||
|
|
||||||
Box(modifier = Modifier
|
Spacer(modifier = Modifier.width(15.dp))
|
||||||
.weight(1f)
|
ConfirmEleCheckBoxItem(modifier = Modifier.fillMaxWidth(),
|
||||||
.clickable {
|
confirmText = "成功",
|
||||||
|
cancelText = "失败",
|
||||||
|
confirmValue = uiState.value.eleWorkOrderBean?.isSuccess == 1,
|
||||||
|
cancelValue = uiState.value.eleWorkOrderBean?.isSuccess == 2,
|
||||||
|
confirmCheckedChange = {
|
||||||
vm.dispatch(ConfirmEleVm.Action.UpdateServiceSuccessState(1))
|
vm.dispatch(ConfirmEleVm.Action.UpdateServiceSuccessState(1))
|
||||||
}
|
},
|
||||||
.border(width = 1.dp,
|
cancelCheckedChange = {
|
||||||
color = Color.Gray,
|
|
||||||
shape = RoundedCornerShape(2.dp))
|
|
||||||
.background(color = headBgColor.takeIf { uiState.value.eleWorkOrderBean?.isSuccess == 1 }
|
|
||||||
?: Color.White, shape = RoundedCornerShape(2.dp))
|
|
||||||
.padding(vertical = 5.dp), contentAlignment = Alignment.Center) {
|
|
||||||
Text("成功",
|
|
||||||
fontSize = 14.sp,
|
|
||||||
fontWeight = FontWeight.SemiBold,
|
|
||||||
color = Color.White.takeIf { uiState.value.eleWorkOrderBean?.isSuccess == 1 }
|
|
||||||
?: Color.Black)
|
|
||||||
}
|
|
||||||
|
|
||||||
Box(modifier = Modifier
|
|
||||||
.weight(1f)
|
|
||||||
.clickable {
|
|
||||||
vm.dispatch(ConfirmEleVm.Action.UpdateServiceSuccessState(2))
|
vm.dispatch(ConfirmEleVm.Action.UpdateServiceSuccessState(2))
|
||||||
}
|
})
|
||||||
.border(width = 1.dp,
|
|
||||||
color = Color.Gray,
|
|
||||||
shape = RoundedCornerShape(2.dp))
|
|
||||||
.background(color = headBgColor.takeIf { uiState.value.eleWorkOrderBean?.isSuccess == 2 }
|
|
||||||
?: Color.White, shape = RoundedCornerShape(2.dp))
|
|
||||||
.padding(vertical = 5.dp), contentAlignment = Alignment.Center) {
|
|
||||||
Text("失败",
|
|
||||||
fontSize = 14.sp,
|
|
||||||
fontWeight = FontWeight.SemiBold,
|
|
||||||
color = Color.White.takeIf { uiState.value.eleWorkOrderBean?.isSuccess == 2 }
|
|
||||||
?: Color.Black)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HorizontalDivider(modifier = Modifier.padding(vertical = 8.dp),
|
||||||
|
color = black10)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -223,9 +210,8 @@ fun ConfirmEleScreen(vm : ConfirmEleVm = viewModel()) {
|
|||||||
Column(modifier = Modifier
|
Column(modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.background(Color.White)
|
.background(Color.White)
|
||||||
.padding(horizontal = 16.dp, vertical = 10.dp)) {
|
.padding(horizontal = 16.dp)) {
|
||||||
Row(verticalAlignment = Alignment.CenterVertically,
|
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||||
modifier = Modifier.padding(bottom = 8.dp)) {
|
|
||||||
Text(text = "*",
|
Text(text = "*",
|
||||||
fontWeight = FontWeight.Bold,
|
fontWeight = FontWeight.Bold,
|
||||||
color = Color.Red,
|
color = Color.Red,
|
||||||
@ -235,56 +221,35 @@ fun ConfirmEleScreen(vm : ConfirmEleVm = viewModel()) {
|
|||||||
fontWeight = FontWeight.Medium,
|
fontWeight = FontWeight.Medium,
|
||||||
color = Color.Black,
|
color = Color.Black,
|
||||||
fontSize = 15.sp)
|
fontSize = 15.sp)
|
||||||
}
|
|
||||||
Row(modifier = Modifier.fillMaxWidth(),
|
|
||||||
horizontalArrangement = Arrangement.spacedBy(24.dp)) {
|
|
||||||
|
|
||||||
Box(modifier = Modifier
|
Spacer(modifier = Modifier.width(15.dp))
|
||||||
.weight(1f)
|
ConfirmEleCheckBoxItem(modifier = Modifier.fillMaxWidth(),
|
||||||
.clickable {
|
confirmText = "更换",
|
||||||
|
cancelText = "不更换",
|
||||||
|
confirmValue = uiState.value.eleWorkOrderBean?.changeBattery == true,
|
||||||
|
cancelValue = uiState.value.eleWorkOrderBean?.changeBattery == false,
|
||||||
|
confirmCheckedChange = {
|
||||||
vm.dispatch(ConfirmEleVm.Action.IsChangeBattery(true))
|
vm.dispatch(ConfirmEleVm.Action.IsChangeBattery(true))
|
||||||
}
|
},
|
||||||
.border(width = 1.dp,
|
cancelCheckedChange = {
|
||||||
color = Color.Gray,
|
|
||||||
shape = RoundedCornerShape(2.dp))
|
|
||||||
.background(color = headBgColor.takeIf { uiState.value.eleWorkOrderBean?.changeBattery == true }
|
|
||||||
?: Color.White, shape = RoundedCornerShape(2.dp))
|
|
||||||
.padding(vertical = 5.dp), contentAlignment = Alignment.Center) {
|
|
||||||
Text("更换",
|
|
||||||
fontSize = 14.sp,
|
|
||||||
fontWeight = FontWeight.SemiBold,
|
|
||||||
color = Color.White.takeIf { uiState.value.eleWorkOrderBean?.changeBattery == true }
|
|
||||||
?: Color.Black)
|
|
||||||
}
|
|
||||||
|
|
||||||
Box(modifier = Modifier
|
|
||||||
.weight(1f)
|
|
||||||
.clickable {
|
|
||||||
vm.dispatch(ConfirmEleVm.Action.IsChangeBattery(false))
|
vm.dispatch(ConfirmEleVm.Action.IsChangeBattery(false))
|
||||||
}
|
})
|
||||||
.border(width = 1.dp,
|
|
||||||
color = Color.Gray,
|
|
||||||
shape = RoundedCornerShape(2.dp))
|
|
||||||
.background(color = headBgColor.takeIf { uiState.value.eleWorkOrderBean?.changeBattery == false }
|
|
||||||
?: Color.White, shape = RoundedCornerShape(2.dp))
|
|
||||||
.padding(vertical = 5.dp), contentAlignment = Alignment.Center) {
|
|
||||||
Text("不更换",
|
|
||||||
fontSize = 14.sp,
|
|
||||||
fontWeight = FontWeight.SemiBold,
|
|
||||||
color = Color.White.takeIf { uiState.value.eleWorkOrderBean?.changeBattery == false }
|
|
||||||
?: Color.Black)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
HorizontalDivider(modifier = Modifier.padding(vertical = 8.dp),
|
||||||
|
color = black10)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (uiState.value.orderInfo?.flowType == Const.TUO_CHE) {
|
if (uiState.value.orderInfo?.flowType == Const.TUO_CHE) {
|
||||||
Column(modifier = Modifier
|
Column(modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
|
.height(86.dp)
|
||||||
.background(Color.White)
|
.background(Color.White)
|
||||||
.padding(horizontal = 16.dp, vertical = 10.dp)) {
|
.padding(horizontal = 16.dp)) {
|
||||||
|
Spacer(modifier = Modifier.height(10.dp))
|
||||||
Row(verticalAlignment = Alignment.CenterVertically,
|
Row(verticalAlignment = Alignment.CenterVertically,
|
||||||
modifier = Modifier.padding(bottom = 8.dp)) {
|
modifier = Modifier.fillMaxHeight().fillMaxWidth()) {
|
||||||
Text(text = "*",
|
Text(text = "*",
|
||||||
fontWeight = FontWeight.Bold,
|
fontWeight = FontWeight.Bold,
|
||||||
color = Color.Red,
|
color = Color.Red,
|
||||||
@ -294,75 +259,49 @@ fun ConfirmEleScreen(vm : ConfirmEleVm = viewModel()) {
|
|||||||
fontWeight = FontWeight.Medium,
|
fontWeight = FontWeight.Medium,
|
||||||
color = Color.Black,
|
color = Color.Black,
|
||||||
fontSize = 15.sp)
|
fontSize = 15.sp)
|
||||||
}
|
|
||||||
Row(modifier = Modifier.fillMaxWidth(),
|
|
||||||
horizontalArrangement = Arrangement.spacedBy(24.dp)) {
|
|
||||||
|
|
||||||
Box(modifier = Modifier
|
Spacer(modifier = Modifier.width(5.dp))
|
||||||
.weight(1f)
|
ConfirmEleCheckBoxItem(confirmText = "是",
|
||||||
.clickable {
|
cancelText = "否",
|
||||||
|
confirmValue = uiState.value.isAddSmallWheel == true,
|
||||||
|
cancelValue = uiState.value.isAddSmallWheel == false,
|
||||||
|
confirmCheckedChange = {
|
||||||
vm.dispatch(ConfirmEleVm.Action.UpdateState(uiState.value.copy(
|
vm.dispatch(ConfirmEleVm.Action.UpdateState(uiState.value.copy(
|
||||||
isAddSmallWheel = true)))
|
isAddSmallWheel = true)))
|
||||||
}
|
},
|
||||||
.border(width = 1.dp,
|
cancelCheckedChange = {
|
||||||
color = Color.Gray,
|
|
||||||
shape = RoundedCornerShape(2.dp))
|
|
||||||
.background(color = headBgColor.takeIf { uiState.value.isAddSmallWheel == true }
|
|
||||||
?: Color.White, shape = RoundedCornerShape(2.dp))
|
|
||||||
.padding(vertical = 5.dp), contentAlignment = Alignment.Center) {
|
|
||||||
Text("是",
|
|
||||||
fontSize = 14.sp,
|
|
||||||
fontWeight = FontWeight.SemiBold,
|
|
||||||
color = Color.White.takeIf { uiState.value.isAddSmallWheel == true }
|
|
||||||
?: Color.Black)
|
|
||||||
}
|
|
||||||
|
|
||||||
Box(modifier = Modifier
|
|
||||||
.weight(1f)
|
|
||||||
.clickable {
|
|
||||||
vm.dispatch(ConfirmEleVm.Action.UpdateState(uiState.value.copy(
|
vm.dispatch(ConfirmEleVm.Action.UpdateState(uiState.value.copy(
|
||||||
isAddSmallWheel = false)))
|
isAddSmallWheel = false)))
|
||||||
}
|
})
|
||||||
.border(width = 1.dp,
|
|
||||||
color = Color.Gray,
|
AnimatedVisibility(uiState.value.isAddSmallWheel == true,
|
||||||
shape = RoundedCornerShape(2.dp))
|
modifier = Modifier.fillMaxWidth()) {
|
||||||
.background(color = headBgColor.takeIf { uiState.value.isAddSmallWheel == false }
|
OutlinedTextField(
|
||||||
?: Color.White, shape = RoundedCornerShape(2.dp))
|
value = "${uiState.value.wheelNum ?: ""}",
|
||||||
.padding(vertical = 5.dp), contentAlignment = Alignment.Center) {
|
onValueChange = { wheel ->
|
||||||
Text("否",
|
if ((wheel.toIntOrNull() ?: 0) > 4) {
|
||||||
fontSize = 14.sp,
|
ToastUtils.showShort("小轮个数不能超过4个")
|
||||||
fontWeight = FontWeight.SemiBold,
|
return@OutlinedTextField
|
||||||
color = Color.White.takeIf { uiState.value.isAddSmallWheel == false }
|
}
|
||||||
?: Color.Black)
|
vm.dispatch(ConfirmEleVm.Action.UpdateState(uiState.value.copy(
|
||||||
|
wheelNum = wheel.toIntOrNull())))
|
||||||
|
},
|
||||||
|
label = { Text("小轮个数", fontSize = 10.sp) },
|
||||||
|
modifier = Modifier
|
||||||
|
.fillMaxWidth()
|
||||||
|
.height(67.dp),
|
||||||
|
maxLines = 1,
|
||||||
|
keyboardOptions = KeyboardOptions.Default.copy(keyboardType = KeyboardType.Number),
|
||||||
|
textStyle = TextStyle.Default.copy(fontSize = 16.sp,
|
||||||
|
color = Color.Black),
|
||||||
|
shape = RoundedCornerShape(6.dp),
|
||||||
|
colors = OutlinedTextFieldDefaults.colors(focusedBorderColor = headBgColor,
|
||||||
|
unfocusedBorderColor = Color.Gray.copy(alpha = 0.5f),
|
||||||
|
focusedLabelColor = headBgColor,
|
||||||
|
unfocusedLabelColor = Color.Gray),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Spacer(Modifier.height(5.dp))
|
|
||||||
|
|
||||||
AnimatedVisibility(uiState.value.isAddSmallWheel == true) {
|
|
||||||
OutlinedTextField(
|
|
||||||
value = "${uiState.value.wheelNum ?: ""}",
|
|
||||||
onValueChange = { wheel ->
|
|
||||||
if ((wheel.toIntOrNull() ?: 0) > 4) {
|
|
||||||
ToastUtils.showShort("小轮个数不能超过4个")
|
|
||||||
return@OutlinedTextField
|
|
||||||
}
|
|
||||||
vm.dispatch(ConfirmEleVm.Action.UpdateState(uiState.value.copy(
|
|
||||||
wheelNum = wheel.toIntOrNull())))
|
|
||||||
},
|
|
||||||
label = { Text("小轮个数") },
|
|
||||||
modifier = Modifier.fillMaxWidth(),
|
|
||||||
maxLines = 1,
|
|
||||||
keyboardOptions = KeyboardOptions.Default.copy(keyboardType = KeyboardType.Number),
|
|
||||||
textStyle = TextStyle.Default.copy(fontSize = 16.sp,
|
|
||||||
color = Color.Black),
|
|
||||||
shape = RoundedCornerShape(6.dp),
|
|
||||||
colors = OutlinedTextFieldDefaults.colors(focusedBorderColor = headBgColor,
|
|
||||||
unfocusedBorderColor = Color.Gray.copy(alpha = 0.5f),
|
|
||||||
focusedLabelColor = headBgColor,
|
|
||||||
unfocusedLabelColor = Color.Gray),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -669,3 +608,32 @@ private fun EleWorkOrderDetailView(eleWorkOrderBean : EleWorkOrderBean?,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
private fun ConfirmEleCheckBoxItem(modifier : Modifier = Modifier,
|
||||||
|
confirmText : String,
|
||||||
|
cancelText : String,
|
||||||
|
confirmValue : Boolean,
|
||||||
|
cancelValue : Boolean,
|
||||||
|
confirmCheckedChange : (Boolean) -> Unit,
|
||||||
|
cancelCheckedChange : (Boolean) -> Unit) {
|
||||||
|
Row(modifier = modifier
|
||||||
|
.height(30.dp)
|
||||||
|
.background(color = Color.White),
|
||||||
|
verticalAlignment = Alignment.CenterVertically) {
|
||||||
|
|
||||||
|
Text(confirmText, color = Color.Black, fontWeight = FontWeight.SemiBold, fontSize = 15.sp)
|
||||||
|
Checkbox(checked = confirmValue, onCheckedChange = {
|
||||||
|
confirmCheckedChange(it)
|
||||||
|
})
|
||||||
|
|
||||||
|
VerticalDivider(modifier = Modifier
|
||||||
|
.padding(horizontal = 5.dp, vertical = 5.dp)
|
||||||
|
.alpha(0.5f))
|
||||||
|
|
||||||
|
Text(cancelText, color = Color.Black, fontWeight = FontWeight.SemiBold, fontSize = 15.sp)
|
||||||
|
Checkbox(checked = cancelValue, onCheckedChange = {
|
||||||
|
cancelCheckedChange(it)
|
||||||
|
}, colors = CheckboxDefaults.colors().copy(checkedBoxColor = buttonBgColor))
|
||||||
|
}
|
||||||
|
}
|
@ -277,9 +277,6 @@ private fun VerifyTipView(arriveRemind: String, arriveRemindUrl: String) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
HorizontalDivider(modifier = Modifier.alpha(0.2f))
|
HorizontalDivider(modifier = Modifier.alpha(0.2f))
|
||||||
|
|
||||||
Spacer(modifier = Modifier.height(10.dp))
|
|
||||||
Text(text = arriveRemindUrl, fontWeight = FontWeight.Medium, fontSize = 16.sp, color = Color.Blue)
|
|
||||||
Spacer(modifier = Modifier.height(10.dp))
|
Spacer(modifier = Modifier.height(10.dp))
|
||||||
if (arriveRemindUrl.endsWith("png")
|
if (arriveRemindUrl.endsWith("png")
|
||||||
|| arriveRemindUrl.endsWith("jpg")
|
|| arriveRemindUrl.endsWith("jpg")
|
||||||
|
@ -46,7 +46,7 @@ fun SignatureView(modifier: Modifier = Modifier, success: (String?) -> Unit, ser
|
|||||||
val intent = Intent(context, GridPaintActivity::class.java)
|
val intent = Intent(context, GridPaintActivity::class.java)
|
||||||
intent.putExtra("background", android.graphics.Color.WHITE)
|
intent.putExtra("background", android.graphics.Color.WHITE)
|
||||||
intent.putExtra("crop", true)
|
intent.putExtra("crop", true)
|
||||||
intent.putExtra("fontSize", 50) //手写字体大小
|
intent.putExtra("fontSize", 30) //手写字体大小
|
||||||
intent.putExtra("format", PenConfig.FORMAT_PNG)
|
intent.putExtra("format", PenConfig.FORMAT_PNG)
|
||||||
intent.putExtra("lineLength", 10) //每行显示字数(超出屏幕支持横向滚动)
|
intent.putExtra("lineLength", 10) //每行显示字数(超出屏幕支持横向滚动)
|
||||||
signatureLauncher.launch(intent)
|
signatureLauncher.launch(intent)
|
||||||
|
Reference in New Issue
Block a user