From ca987bfb2dad4b87b931a4bf3e93c030bde63e1d Mon Sep 17 00:00:00 2001
From: 张含笑 <zhx18749296735@163.com>
Date: Mon, 13 Oct 2025 11:44:39 +0800
Subject: [PATCH] feat:详情

---
 src/subPackages/workDetail/index.vue |  233 +++++++++++++++++++++++++++++++++------------------------
 1 files changed, 135 insertions(+), 98 deletions(-)

diff --git a/src/subPackages/workDetail/index.vue b/src/subPackages/workDetail/index.vue
index 32a159e..dc3593f 100644
--- a/src/subPackages/workDetail/index.vue
+++ b/src/subPackages/workDetail/index.vue
@@ -15,34 +15,32 @@
 		</div>
 		<!-- 步骤条 -->
 		<div class="stepContainer">
-		  <up-steps :current="currentStep" direction="column">
-		      <up-steps-item 
-		        v-for="(step, index) in stepTitles" 
-		        :key="index"
-		      >
-		        <template #title>
-		          <div class="horizontal-step">
-		            <span class="step-title">{{ step.title }}</span>
-		            <div class="step-desc" v-if="stepResponse[index]">
-		              <span>{{ stepResponse[index].name || '' }}</span>
-		              <span>{{ stepResponse[index].create_time || '' }}</span>
-		            </div>
-		          </div>
-		        </template>
-		      </up-steps-item>
-		    </up-steps>
+			<up-steps :current="currentStep" direction="column">
+				<up-steps-item v-for="(step, index) in stepTitles" :key="index">
+					<template #title>
+						<div class="horizontal-step">
+							<span class="step-title">{{ step.title }}</span>
+							<div class="step-desc" v-if="stepResponse[index]">
+								<span>{{ stepResponse[index].name || '' }}</span>
+								<span>{{ stepResponse[index].create_time || '' }}</span>
+							</div>
+						</div>
+					</template>
+				</up-steps-item>
+			</up-steps>
 		</div>
 		<!-- 工单内容 -->
 		<div class="workOrderContent">
 			<div class="workOrderTitle">工单内容</div>
 			<div class="workOrderContainer">
-	
+				
 				<div>工单名称:{{workDetailData.event_name}}</div>
 				<div>工单类型:{{workDetailData.type}}</div>
 				<div>关联任务:{{workDetailData.job_name}}</div>
 				<div>工单创建人:{{workDetailData.event_num?.slice(0, 2) === 'AI' ? 'AI 小飞':workDetailData.creator}}</div>
 				<div>事件地址:{{workDetailData.address}}</div>
-				<div>关联算法:{{workDetailData.ai_types}}</div>
+				
+				<div >关联算法:{{workDetailData.ai_types}}</div>
 				<div>发起部门:{{workDetailData.dept_name}}</div>
 				<div>发起任务时间:{{workDetailData.create_time}}</div>
 				<div>工单内容:{{workDetailData.remark}}</div>
@@ -54,11 +52,11 @@
 				上一页
 			</div>
 			<div class="btngroups" v-if="workDetailData.status===2">
-				<up-button type="primary" text="通过"  @click="approveTicket"></up-button>
+				<up-button type="primary" text="通过" @click="approveTicket"></up-button>
 				<up-button type="error" text="不通过" @click="rejectTicket"></up-button>
 			</div>
 			<div class="btngroups" v-else-if="workDetailData.status===0">
-				<up-button type="primary" text="受理"  @click="approveAndDispatch"></up-button>
+				<up-button type="primary" text="受理" @click="approveAndDispatch"></up-button>
 				<up-button type="error" text="不受理" @click="rejectTicket"></up-button>
 			</div>
 			<div class="btngroups" v-else-if="workDetailData.status===3">
@@ -66,7 +64,7 @@
 				<up-button type="error" text="取消"></up-button>
 			</div>
 			<div class="btngroups" v-else="workDetailData.status===4">
-				
+
 				<up-button type="error" text="取消"></up-button>
 			</div>
 			<div class="leftBtn" @click="rightClick">
@@ -78,17 +76,19 @@
 </template>
 
 <script setup>
-	
-	import {getStepInfo,getList,flowEvent} from '/src/api/work/index.js'
-	
+	import {
+		getStepInfo,
+		getList,
+		flowEvent
+	} from '/src/api/work/index.js'
+
 	const eventNum = ref('');
 	const currentStatus = ref('')
 	const stepResponse = ref([]);
 	const currentStep = ref(0);
 	// 工单内容
 	const workDetailData = ref({})
-	const stepTitles  =ref([
-		{
+	const stepTitles = ref([{
 			title: '待审核',
 			status: '2'
 		},
@@ -96,49 +96,62 @@
 			title: '待处理',
 			status: '0'
 		},
-		
+
 		{
 			title: '处理中',
 			status: '3'
-		},{
+		}, {
 			title: '已完成',
 			status: '4'
 		}
 	])
 	onLoad(async (options) => {
-	  eventNum.value = options.eventNum;
-	  await getDataList(eventNum.value); 
-	  await getStepInfoData(eventNum.value); 
+		eventNum.value = options.eventNum;
+		await getDataList(eventNum.value);
+		await getStepInfoData(eventNum.value);
 	});
 	const getDataList = async (val) => {
-	  const params = {
-	    current: 1,
-	    size: 9999,
-	    source: 1,  
-	    event_name: val
-	  }
-	  const res = await getList(params);
-	  const response = res.data.data.records;
-	  workDetailData.value = response[0];
-	  currentStatus.value = workDetailData.value.status;
-	  console.log('详情',response);
+		const params = {
+			current: 1,
+			size: 9999,
+			source: 1,
+			event_name: val
+		}
+		const res = await getList(params);
+		const response = res.data.data.records;
+		workDetailData.value = response[0];
+		currentStatus.value = workDetailData.value.status;
+		// console.log('详情',response);
 	}
 	// 步骤条
 	const calculateCurrentStep = (status) => {
-	  const statusToStep = {
-	    '2': 0,  // 待审核 -> 第0步
-	    '0': 1,  // 待处理 -> 第1步
-	    '3': 2,  // 处理中 -> 第2步
-	    '4': 3   // 已完成 -> 第3步
-	  }
-	  return statusToStep[String(status)] || 0 
+		const statusToStep = {
+			'2': 0, // 待审核 -> 第0步
+			'0': 1, // 待处理 -> 第1步
+			'3': 2, // 处理中 -> 第2步
+			'4': 3 // 已完成 -> 第3步
+		}
+		return statusToStep[String(status)] || 0
 	}
+
 	const getStepInfoData = async (val) => {
-	  const res = await getStepInfo(val);
-	  stepResponse.value = res.data.data;
-	  console.log('stepResponse',stepResponse.value)
-	  currentStep.value = calculateCurrentStep(currentStatus.value);
-	}
+		const res = await getStepInfo(val);
+		stepResponse.value = res.data.data;
+		currentStep.value = calculateCurrentStep(currentStatus.value);
+
+		// 动态匹配步骤描述
+		const matchedSteps = {};
+		stepResponse.value.forEach(step => {
+			// 找到 stepTitles 中对应的步骤索引
+			const stepIndex = stepTitles.value.findIndex(item => item.status === String(step.status));
+			if (stepIndex !== -1) {
+				matchedSteps[stepIndex] = step;
+			}
+		});
+
+		// 确保 stepResponse 按 stepTitles 顺序填充
+		stepResponse.value = stepTitles.value.map((_, index) => matchedSteps[index] || null);
+	};
 	// 图片预览
 	const previewImage = (url) => {
 		uni.previewImage({
@@ -147,11 +160,22 @@
 		});
 	};
 	// 通过
-	const approveTicket=()=>{}
+	const approveTicket = async () => {
+		const data = {
+			id: workDetailData.value.id,
+			status: workDetailData.value.status,
+			isPass: 0, // 0 表示通过
+			eventNum: workDetailData.value.event_num,
+		};
+		console.log('data', data)
+		const file = workDetailData.value.file || null;
+		const response = await flowEvent(data, file);
+		console.log('通过', response)
+	}
 	// // 不通过
-	const rejectTicket=()=>{}
+	const rejectTicket = () => {}
 	// // 受理
-	const approveAndDispatch=()=>{}
+	const approveAndDispatch = () => {}
 	// // 不受理
 	// const rejectTicket=()=>{}
 	// // 完成工单
@@ -180,7 +204,7 @@
 					position: absolute;
 					left: 0;
 					bottom: 0;
-					    width: 100%; 
+					width: 100%;
 				}
 
 				.titleText {
@@ -198,69 +222,82 @@
 			background-color: antiquewhite;
 			border-radius: 5px;
 			padding: 10px;
-			 .horizontal-step {
-			    display: flex;
-			    align-items: center;
-			    gap: 12px;
-			    
-			    .step-title {
-			      min-width: 60px; 
-			    }
-			    
-			    .step-desc {
-			      display: flex;
-				  justify-content: space-between;
-			      gap: 8px;
-			      // color: #666;
-			      font-size: 14px;
-			    }
-			  }
+
+			.horizontal-step {
+				display: flex;
+				align-items: center;
+				gap: 12px;
+
+				.step-title {
+					min-width: 60px;
+				}
+
+				.step-desc {
+					display: flex;
+					justify-content: space-between;
+					gap: 8px;
+					// color: #666;
+					font-size: 14px;
+				}
+			}
 
 		}
 
-		
-		.actionButton{
+
+		.actionButton {
 			display: flex;
 			justify-content: space-between;
 			margin-bottom: 10px;
+
 			.btngroups {
 				display: flex;
 				justify-content: space-between;
+
 				.u-button {
-				   padding: 9px 20px;
-				     height: 32px;
-				     &:last-child {
-				         margin-left: 12px;
-				         margin-right: 12px;
-				       }
+					padding: 9px 20px;
+					height: 32px;
+
+					&:last-child {
+						margin-left: 12px;
+						margin-right: 12px;
+					}
 				}
 			}
+
 			.leftBtn {
-			  width: 70px;
-			  height: 32px;
-			  background-color: #999;
-			  border-radius: 5px;
-			  text-align: center;
-			  line-height: 32px;
-			  color: #fff;
-			  cursor: pointer;
-			  opacity: 0.8;
+				width: 70px;
+				height: 32px;
+				background-color: #999;
+				border-radius: 5px;
+				text-align: center;
+				line-height: 32px;
+				color: #fff;
+				cursor: pointer;
+				opacity: 0.8;
 			}
+
 			.disableds {
-			  background: #999 !important;
-			  cursor: not-allowed !important;
-			  pointer-events: none;
-			  opacity: 0.3 !important;
+				background: #999 !important;
+				cursor: not-allowed !important;
+				pointer-events: none;
+				opacity: 0.3 !important;
 			}
 		}
+
 		.workOrderContent {
 			margin-top: 15px;
+
 			.workOrderContainer {
 				div {
 					margin-bottom: 10px;
 				}
+
+				.titketName {
+					display: flex;
+					align-items: center;
+				}
 			}
 		}
-		
+
 	}
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.9.3