|
|
@@ -0,0 +1,479 @@
|
|
|
+package com.iscs.bozzys.ui.pages.detail.job
|
|
|
+
|
|
|
+import android.content.Context
|
|
|
+import android.content.Intent
|
|
|
+import androidx.compose.foundation.background
|
|
|
+import androidx.compose.foundation.border
|
|
|
+import androidx.compose.foundation.layout.Arrangement
|
|
|
+import androidx.compose.foundation.layout.Box
|
|
|
+import androidx.compose.foundation.layout.Column
|
|
|
+import androidx.compose.foundation.layout.FlowRow
|
|
|
+import androidx.compose.foundation.layout.PaddingValues
|
|
|
+import androidx.compose.foundation.layout.Row
|
|
|
+import androidx.compose.foundation.layout.Spacer
|
|
|
+import androidx.compose.foundation.layout.fillMaxWidth
|
|
|
+import androidx.compose.foundation.layout.height
|
|
|
+import androidx.compose.foundation.layout.heightIn
|
|
|
+import androidx.compose.foundation.layout.offset
|
|
|
+import androidx.compose.foundation.layout.padding
|
|
|
+import androidx.compose.foundation.layout.size
|
|
|
+import androidx.compose.foundation.layout.width
|
|
|
+import androidx.compose.foundation.rememberScrollState
|
|
|
+import androidx.compose.foundation.shape.RoundedCornerShape
|
|
|
+import androidx.compose.foundation.text.BasicTextField
|
|
|
+import androidx.compose.foundation.text.KeyboardOptions
|
|
|
+import androidx.compose.foundation.verticalScroll
|
|
|
+import androidx.compose.material3.Button
|
|
|
+import androidx.compose.material3.ButtonDefaults
|
|
|
+import androidx.compose.material3.Icon
|
|
|
+import androidx.compose.material3.LocalTextStyle
|
|
|
+import androidx.compose.material3.MaterialTheme
|
|
|
+import androidx.compose.material3.Text
|
|
|
+import androidx.compose.runtime.Composable
|
|
|
+import androidx.compose.ui.Alignment
|
|
|
+import androidx.compose.ui.Modifier
|
|
|
+import androidx.compose.ui.draw.clip
|
|
|
+import androidx.compose.ui.graphics.Color
|
|
|
+import androidx.compose.ui.graphics.SolidColor
|
|
|
+import androidx.compose.ui.res.painterResource
|
|
|
+import androidx.compose.ui.text.font.FontWeight
|
|
|
+import androidx.compose.ui.text.input.KeyboardType
|
|
|
+import androidx.compose.ui.unit.dp
|
|
|
+import androidx.compose.ui.unit.sp
|
|
|
+import com.iscs.bozzys.R
|
|
|
+import com.iscs.bozzys.ui.base.PageBase
|
|
|
+import com.iscs.bozzys.ui.base.Title
|
|
|
+import com.iscs.bozzys.ui.pages.compose.CardContainer
|
|
|
+import com.iscs.bozzys.ui.theme.Main
|
|
|
+import com.iscs.bozzys.ui.theme.Text
|
|
|
+
|
|
|
+/**
|
|
|
+ * 跳转到作业详情页面
|
|
|
+ */
|
|
|
+fun Context.openPageDetailJob() {
|
|
|
+ startActivity(Intent(this, PageDetailJob::class.java))
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 作业详情页面
|
|
|
+ */
|
|
|
+class PageDetailJob : PageBase() {
|
|
|
+
|
|
|
+ @Composable
|
|
|
+ override fun GetViews(pv: PaddingValues) {
|
|
|
+ val pb = pv.calculateBottomPadding()
|
|
|
+ Column(
|
|
|
+ modifier = Modifier
|
|
|
+ .background(Color(0xFFF8F8F8))
|
|
|
+ ) {
|
|
|
+ Title(pv, "作业详情")
|
|
|
+ Column(
|
|
|
+ modifier = Modifier
|
|
|
+ .weight(1f)
|
|
|
+ .verticalScroll(state = rememberScrollState())
|
|
|
+ .padding(16.dp)
|
|
|
+ ) {
|
|
|
+ CardContainer(
|
|
|
+ modifier = Modifier
|
|
|
+ .fillMaxWidth()
|
|
|
+ ) {
|
|
|
+ Column(Modifier.padding(10.dp)) {
|
|
|
+ Row(verticalAlignment = Alignment.CenterVertically) {
|
|
|
+ Icon(
|
|
|
+ painterResource(R.drawable.jobs),
|
|
|
+ contentDescription = null,
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(end = 5.dp)
|
|
|
+ .size(16.dp),
|
|
|
+ tint = MaterialTheme.colorScheme.primary
|
|
|
+ )
|
|
|
+ Text("审核作业", fontSize = 16.sp, fontWeight = FontWeight.Bold, color = Text)
|
|
|
+ }
|
|
|
+ FlowRow(
|
|
|
+ verticalArrangement = Arrangement.Center, modifier = Modifier
|
|
|
+ .padding(top = 6.dp)
|
|
|
+ .offset(x = (-3).dp)
|
|
|
+ ) {
|
|
|
+ Row(
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(horizontal = 3.dp, vertical = 3.dp)
|
|
|
+ .clip(RoundedCornerShape(50))
|
|
|
+ .background(Color(0xFFFFF8E6))
|
|
|
+ .padding(horizontal = 10.dp, vertical = 2.dp),
|
|
|
+ verticalAlignment = Alignment.CenterVertically
|
|
|
+ ) {
|
|
|
+ Icon(
|
|
|
+ painterResource(R.drawable.number),
|
|
|
+ contentDescription = null,
|
|
|
+ tint = MaterialTheme.colorScheme.primary,
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(end = 3.dp)
|
|
|
+ .size(14.dp)
|
|
|
+ )
|
|
|
+ Text("WO-2025-003", fontSize = 12.sp, color = Text)
|
|
|
+ }
|
|
|
+ Row(
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(horizontal = 3.dp, vertical = 3.dp)
|
|
|
+ .clip(RoundedCornerShape(50))
|
|
|
+ .background(Color(0xFFFFF8E6))
|
|
|
+ .padding(horizontal = 10.dp, vertical = 2.dp),
|
|
|
+ verticalAlignment = Alignment.CenterVertically
|
|
|
+ ) {
|
|
|
+ Icon(
|
|
|
+ painterResource(R.drawable.location),
|
|
|
+ contentDescription = null,
|
|
|
+ tint = MaterialTheme.colorScheme.primary,
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(end = 3.dp)
|
|
|
+ .size(14.dp)
|
|
|
+ )
|
|
|
+ Text("车间A区", fontSize = 12.sp, color = Text)
|
|
|
+ }
|
|
|
+ Row(
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(horizontal = 3.dp, vertical = 3.dp)
|
|
|
+ .clip(RoundedCornerShape(50))
|
|
|
+ .background(Color(0xFFFFF8E6))
|
|
|
+ .padding(horizontal = 10.dp, vertical = 2.dp),
|
|
|
+ verticalAlignment = Alignment.CenterVertically
|
|
|
+ ) {
|
|
|
+ Icon(
|
|
|
+ painterResource(R.drawable.user),
|
|
|
+ contentDescription = null,
|
|
|
+ tint = MaterialTheme.colorScheme.primary,
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(end = 3.dp)
|
|
|
+ .size(14.dp)
|
|
|
+ )
|
|
|
+ Text("张三", fontSize = 12.sp, color = Text)
|
|
|
+ }
|
|
|
+ Row(
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(horizontal = 3.dp, vertical = 3.dp)
|
|
|
+ .clip(RoundedCornerShape(50))
|
|
|
+ .background(Color(0xFFFFF8E6))
|
|
|
+ .padding(horizontal = 10.dp, vertical = 2.dp),
|
|
|
+ verticalAlignment = Alignment.CenterVertically
|
|
|
+ ) {
|
|
|
+ Icon(
|
|
|
+ painterResource(R.drawable.target),
|
|
|
+ contentDescription = null,
|
|
|
+ tint = MaterialTheme.colorScheme.primary,
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(end = 3.dp)
|
|
|
+ .size(14.dp)
|
|
|
+ )
|
|
|
+ Text("待审核", fontSize = 12.sp, color = Text)
|
|
|
+ }
|
|
|
+ Row(
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(horizontal = 3.dp, vertical = 3.dp)
|
|
|
+ .clip(RoundedCornerShape(50))
|
|
|
+ .background(Color(0xFFFFF8E6))
|
|
|
+ .padding(horizontal = 10.dp, vertical = 2.dp),
|
|
|
+ verticalAlignment = Alignment.CenterVertically
|
|
|
+ ) {
|
|
|
+ Icon(
|
|
|
+ painterResource(R.drawable.job_todo),
|
|
|
+ contentDescription = null,
|
|
|
+ tint = MaterialTheme.colorScheme.primary,
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(end = 3.dp)
|
|
|
+ .size(14.dp)
|
|
|
+ )
|
|
|
+ Text("8小时", fontSize = 12.sp, color = Text)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 检修计划方案
|
|
|
+ CardContainer(
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(top = 16.dp)
|
|
|
+ .fillMaxWidth()
|
|
|
+ ) {
|
|
|
+ Column(Modifier.padding(10.dp)) {
|
|
|
+ Row(verticalAlignment = Alignment.CenterVertically) {
|
|
|
+ Icon(
|
|
|
+ painterResource(R.drawable.job_check),
|
|
|
+ contentDescription = null,
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(end = 5.dp)
|
|
|
+ .size(16.dp),
|
|
|
+ tint = MaterialTheme.colorScheme.primary
|
|
|
+ )
|
|
|
+ Text("检修计划方案", fontSize = 16.sp, fontWeight = FontWeight.Bold, color = Text)
|
|
|
+ }
|
|
|
+ Spacer(
|
|
|
+ Modifier
|
|
|
+ .padding(vertical = 10.dp)
|
|
|
+ .fillMaxWidth()
|
|
|
+ .height(1.dp)
|
|
|
+ .background(Color(0xFFF5F5F5))
|
|
|
+ )
|
|
|
+ Text("本次检修主要针对三号线履带传送线分装设备进行日常维护保养,包括:", fontSize = 14.sp, color = Color(0xFF666666))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 核心风险点
|
|
|
+ CardContainer(
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(top = 16.dp)
|
|
|
+ .fillMaxWidth()
|
|
|
+ ) {
|
|
|
+ Column(Modifier.padding(10.dp)) {
|
|
|
+ Row(verticalAlignment = Alignment.CenterVertically) {
|
|
|
+ Icon(
|
|
|
+ painterResource(R.drawable.job_warning),
|
|
|
+ contentDescription = null,
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(end = 5.dp)
|
|
|
+ .size(16.dp),
|
|
|
+ tint = MaterialTheme.colorScheme.primary
|
|
|
+ )
|
|
|
+ Text("核心风险点", fontSize = 16.sp, fontWeight = FontWeight.Bold, color = Text)
|
|
|
+ }
|
|
|
+ Spacer(
|
|
|
+ Modifier
|
|
|
+ .padding(vertical = 10.dp)
|
|
|
+ .fillMaxWidth()
|
|
|
+ .height(1.dp)
|
|
|
+ .background(Color(0xFFF5F5F5))
|
|
|
+ )
|
|
|
+ Box(
|
|
|
+ Modifier
|
|
|
+ .padding(bottom = 6.dp)
|
|
|
+ .clip(RoundedCornerShape(4.dp))
|
|
|
+ .background(Color(0xFFFF4D4F))
|
|
|
+ ) {
|
|
|
+ Row(
|
|
|
+ Modifier
|
|
|
+ .offset(x = 3.dp)
|
|
|
+ .clip(RoundedCornerShape(2.dp))
|
|
|
+ .background(Color(0xFFFFF0E6))
|
|
|
+ .padding(horizontal = 8.dp, vertical = 5.dp)
|
|
|
+ ) {
|
|
|
+ Text("1.", color = Color(0xFFFF4D4F), fontSize = 14.sp, modifier = Modifier.padding(end = 6.dp))
|
|
|
+ Text(
|
|
|
+ "机械伤害风险:设备运行时可能造成人员伤害",
|
|
|
+ fontSize = 14.sp,
|
|
|
+ color = Color(0xFF666666),
|
|
|
+ modifier = Modifier.weight(1f)
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Box(
|
|
|
+ Modifier
|
|
|
+ .padding(bottom = 6.dp)
|
|
|
+ .clip(RoundedCornerShape(4.dp))
|
|
|
+ .background(Color(0xFFFF4D4F))
|
|
|
+ ) {
|
|
|
+ Row(
|
|
|
+ Modifier
|
|
|
+ .offset(x = 3.dp)
|
|
|
+ .clip(RoundedCornerShape(2.dp))
|
|
|
+ .background(Color(0xFFFFF0E6))
|
|
|
+ .padding(horizontal = 8.dp, vertical = 5.dp)
|
|
|
+ ) {
|
|
|
+ Text("2.", color = Color(0xFFFF4D4F), fontSize = 14.sp, modifier = Modifier.padding(end = 6.dp))
|
|
|
+ Text(
|
|
|
+ "电气安全风险:设备断电不彻底可能导致触电",
|
|
|
+ fontSize = 14.sp,
|
|
|
+ color = Color(0xFF666666),
|
|
|
+ modifier = Modifier.weight(1f)
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Box(
|
|
|
+ Modifier
|
|
|
+ .padding(bottom = 6.dp)
|
|
|
+ .clip(RoundedCornerShape(4.dp))
|
|
|
+ .background(Color(0xFFFF4D4F))
|
|
|
+ ) {
|
|
|
+ Row(
|
|
|
+ Modifier
|
|
|
+ .offset(x = 3.dp)
|
|
|
+ .clip(RoundedCornerShape(2.dp))
|
|
|
+ .background(Color(0xFFFFF0E6))
|
|
|
+ .padding(horizontal = 8.dp, vertical = 5.dp)
|
|
|
+ ) {
|
|
|
+ Text("3.", color = Color(0xFFFF4D4F), fontSize = 14.sp, modifier = Modifier.padding(end = 6.dp))
|
|
|
+ Text(
|
|
|
+ "高处作业风险:部分检修位置需要登高作业",
|
|
|
+ fontSize = 14.sp,
|
|
|
+ color = Color(0xFF666666),
|
|
|
+ modifier = Modifier.weight(1f)
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 相关资料附件
|
|
|
+ CardContainer(
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(top = 16.dp)
|
|
|
+ .fillMaxWidth()
|
|
|
+ ) {
|
|
|
+ Column(Modifier.padding(10.dp)) {
|
|
|
+ Row(verticalAlignment = Alignment.CenterVertically) {
|
|
|
+ Icon(
|
|
|
+ painterResource(R.drawable.job_attach),
|
|
|
+ contentDescription = null,
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(end = 5.dp)
|
|
|
+ .size(16.dp),
|
|
|
+ tint = MaterialTheme.colorScheme.primary
|
|
|
+ )
|
|
|
+ Text("相关资料附件", fontSize = 16.sp, fontWeight = FontWeight.Bold, color = Text)
|
|
|
+ }
|
|
|
+ Spacer(
|
|
|
+ Modifier
|
|
|
+ .padding(vertical = 10.dp)
|
|
|
+ .fillMaxWidth()
|
|
|
+ .height(1.dp)
|
|
|
+ .background(Color(0xFFF5F5F5))
|
|
|
+ )
|
|
|
+ Row(
|
|
|
+ verticalAlignment = Alignment.CenterVertically,
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(bottom = 6.dp)
|
|
|
+ .fillMaxWidth()
|
|
|
+ .border(1.dp, color = Color(0xFFEEEEEE), shape = RoundedCornerShape(12.dp))
|
|
|
+ .clip(RoundedCornerShape(12.dp))
|
|
|
+ .background(Color(0xFFF8F8F8))
|
|
|
+ .padding(10.dp)
|
|
|
+ ) {
|
|
|
+ Icon(
|
|
|
+ painterResource(R.drawable.file_pdf),
|
|
|
+ contentDescription = null,
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(end = 5.dp)
|
|
|
+ .size(16.dp),
|
|
|
+ tint = MaterialTheme.colorScheme.primary
|
|
|
+ )
|
|
|
+ Text("检修方案.pdf", color = Text, fontSize = 14.sp)
|
|
|
+ }
|
|
|
+ Row(
|
|
|
+ verticalAlignment = Alignment.CenterVertically,
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(bottom = 6.dp)
|
|
|
+ .fillMaxWidth()
|
|
|
+ .border(1.dp, color = Color(0xFFEEEEEE), shape = RoundedCornerShape(12.dp))
|
|
|
+ .clip(RoundedCornerShape(12.dp))
|
|
|
+ .background(Color(0xFFF8F8F8))
|
|
|
+ .padding(10.dp)
|
|
|
+ ) {
|
|
|
+ Icon(
|
|
|
+ painterResource(R.drawable.file_jpg),
|
|
|
+ contentDescription = null,
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(end = 5.dp)
|
|
|
+ .size(16.dp),
|
|
|
+ tint = MaterialTheme.colorScheme.primary
|
|
|
+ )
|
|
|
+ Text("设备位置图.jpg", color = Text, fontSize = 14.sp)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 审核意见
|
|
|
+ CardContainer(
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(top = 16.dp)
|
|
|
+ .fillMaxWidth()
|
|
|
+ ) {
|
|
|
+ Column(Modifier.padding(10.dp)) {
|
|
|
+ Row(verticalAlignment = Alignment.CenterVertically) {
|
|
|
+ Icon(
|
|
|
+ painterResource(R.drawable.message),
|
|
|
+ contentDescription = null,
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(end = 5.dp)
|
|
|
+ .size(16.dp),
|
|
|
+ tint = MaterialTheme.colorScheme.primary
|
|
|
+ )
|
|
|
+ Text("审核意见", fontSize = 16.sp, fontWeight = FontWeight.Bold, color = Text)
|
|
|
+ }
|
|
|
+ Spacer(
|
|
|
+ Modifier
|
|
|
+ .padding(vertical = 10.dp)
|
|
|
+ .fillMaxWidth()
|
|
|
+ .height(1.dp)
|
|
|
+ .background(Color(0xFFF5F5F5))
|
|
|
+ )
|
|
|
+ BasicTextField(
|
|
|
+ "",
|
|
|
+ onValueChange = {},
|
|
|
+ Modifier
|
|
|
+ .fillMaxWidth()
|
|
|
+ .heightIn(min = 120.dp)
|
|
|
+ .border(1.dp, color = Color(0xFFEEEEEE), shape = RoundedCornerShape(12.dp))
|
|
|
+ .clip(RoundedCornerShape(12.dp))
|
|
|
+ .background(Color(0xFFF8F8F8))
|
|
|
+ .padding(10.dp),
|
|
|
+ textStyle = LocalTextStyle.current.copy(fontSize = 14.sp, lineHeight = 18.sp),
|
|
|
+ decorationBox = { innerTextField ->
|
|
|
+ Box(contentAlignment = Alignment.TopStart) {
|
|
|
+ innerTextField()
|
|
|
+ if ("".isEmpty()) {
|
|
|
+ val text = "请输入审核意见"
|
|
|
+ Text(text, color = Color(0xFF9CA3AF), fontSize = 14.sp, lineHeight = 18.sp)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ cursorBrush = SolidColor(Main),
|
|
|
+ keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Text)
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 底部功能按钮
|
|
|
+ Row(
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(bottom = if (pb.value <= 0) 10.dp else pb)
|
|
|
+ .padding(horizontal = 24.dp)
|
|
|
+ .fillMaxWidth()
|
|
|
+ ) {
|
|
|
+ Button(
|
|
|
+ {}, modifier = Modifier
|
|
|
+ .weight(1f)
|
|
|
+ .height(50.dp)
|
|
|
+ .clip(RoundedCornerShape(12.dp)),
|
|
|
+ colors = ButtonDefaults.buttonColors(containerColor = Color(0xFFFFF0E6)),
|
|
|
+ shape = RoundedCornerShape(12.dp)
|
|
|
+ ) {
|
|
|
+ Row(verticalAlignment = Alignment.CenterVertically) {
|
|
|
+ Icon(
|
|
|
+ painter = painterResource(R.drawable.job_close),
|
|
|
+ contentDescription = null,
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(end = 5.dp)
|
|
|
+ .size(16.dp),
|
|
|
+ tint = Color(0xFFFF4D4F)
|
|
|
+ )
|
|
|
+ Text("审核不通过", color = Color(0xFFFF4D4F))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Spacer(Modifier.width(16.dp))
|
|
|
+ Button(
|
|
|
+ {}, modifier = Modifier
|
|
|
+ .weight(1f)
|
|
|
+ .height(50.dp)
|
|
|
+ .clip(RoundedCornerShape(12.dp)),
|
|
|
+ shape = RoundedCornerShape(12.dp)
|
|
|
+ ) {
|
|
|
+ Row(verticalAlignment = Alignment.CenterVertically) {
|
|
|
+ Icon(
|
|
|
+ painter = painterResource(R.drawable.job_finish),
|
|
|
+ contentDescription = null,
|
|
|
+ modifier = Modifier
|
|
|
+ .padding(end = 5.dp)
|
|
|
+ .size(16.dp),
|
|
|
+ tint = Color.White
|
|
|
+ )
|
|
|
+ Text("审核通过", color = Color.White)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|