From 35fb4a40571d69b85caede7348101d71789b5fb3 Mon Sep 17 00:00:00 2001
From: chenyao <1219716595@qq.com>
Date: Tue, 04 Aug 2026 11:01:14 +0800
Subject: [PATCH] feat:提交吉安工单和移动端处置数据

---
 applications/task-work-order/src/views/orderView/orderManage/eventManage/ViewDiaLog.vue |   87 ++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 85 insertions(+), 2 deletions(-)

diff --git a/applications/task-work-order/src/views/orderView/orderManage/eventManage/ViewDiaLog.vue b/applications/task-work-order/src/views/orderView/orderManage/eventManage/ViewDiaLog.vue
index 5a963f0..812f549 100644
--- a/applications/task-work-order/src/views/orderView/orderManage/eventManage/ViewDiaLog.vue
+++ b/applications/task-work-order/src/views/orderView/orderManage/eventManage/ViewDiaLog.vue
@@ -72,12 +72,17 @@
 				</div>
 				<div class="img_flow">
 					<div class="imgurl">
-						<el-image
+						<el-image v-if="eventInfo.attachmentType === 1"
 							:src="eventInfo.eventImageUrl"
 							:preview-src-list="[eventInfo.eventImageUrl]"
 							fit="cover"
 							preview-teleported
 						/>
+						<div class="video-btn" v-if="eventInfo.attachmentType === 3" @click="videoClick(eventInfo)">
+							<el-icon :size="30" color="#fff">
+								<VideoPlay />
+							</el-icon>
+						</div>
 					</div>
 					<div class="flow">
 						<div v-if="disposeRecords.length === 0">
@@ -86,7 +91,7 @@
 						<div v-else class="flow-card" v-for="item in disposeRecords" :key="item.id">
 							<div class="flow-row1">
 								<span class="flow-name">{{ item.disposeUserName }}</span>
-								<span class="flow-status">{{ item.disposeStatusName }}</span>
+								<span class="flow-status card-status" :class="statusClass(item.disposeStatus)">{{ item.disposeStatusName }}</span>
 							</div>
 							<div class="flow-row2">{{ item.disposeContent }}</div>
 							<div class="flow-row3" v-if="item.attachUrl?.length">
@@ -114,6 +119,7 @@
 			</div>
 		</div>
 	</el-dialog>
+	<VideoPlayDialog ref="videoPlayDialogRef" v-if="VideoShow" v-model="VideoShow" :playUrl="eventInfo.eventImageUrl" />
 </template>
 
 <script setup>
@@ -121,11 +127,15 @@
 import { getDetailFull } from './eventManageApi'
 import OrderStepBar from './OrderStepBar.vue'
 import { ref } from 'vue'
+import { VideoPlay } from '@element-plus/icons-vue'
+import VideoPlayDialog from '@/components/VideoPlayDialog.vue'
 
 const visible = defineModel()
 const eventInfo = ref({})
 const disposeRecords = ref([])
 const statusFlows = ref([])
+const VideoShow = ref(false)
+const videoPlayDialogRef = ref(null)
 
 // 获取状态文本
 const getStatusLabel = status => {
@@ -137,6 +147,14 @@
 		4: '已完成',
 	}
 	return map[status] || '未知'
+}
+
+// 状态样式类名
+const statusClass = status => {
+	if (status === 1) return 'status-processing'
+	if (status === 3) return 'status-handled'
+	if (status === 4) return 'status-completed'
+	return ''
 }
 
 // 兼容事件记录接口中不同版本的字段名称
@@ -152,9 +170,15 @@
 	}
 }
 
+function videoClick(eventInfo) {
+	// currentVideo.value = eventInfo
+	VideoShow.value = true
+}
+
 // 打开弹框
 async function open({ row } = {}) {
 	if (!row?.id) return
+	console.log(row, '9098')
 	const res = await getDetailFull({ id: row.id })
 	const detail = res?.data?.data || {}
 	eventInfo.value = detail.eventInfo || {}
@@ -216,6 +240,44 @@
 					width: 100%;
 				}
 			}
+			.video-btn {
+		width: 100%;
+		height:100%;
+		position: relative;
+		overflow: hidden;
+		border-radius: 4px;
+		background: linear-gradient(135deg, rgba(76, 52, 255, 0.14), rgba(76, 52, 255, 0) 48%),
+			linear-gradient(180deg, #f4f5ff 0%, #e9ecff 100%);
+		box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.7);
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		cursor: pointer;
+
+		&::before {
+			content: '';
+			position: absolute;
+			inset: 0;
+			background-image: linear-gradient(
+				90deg,
+				rgba(76, 52, 255, 0.05) 0,
+				rgba(76, 52, 255, 0.05) 1px,
+				transparent 1px,
+				transparent 12px
+			);
+			opacity: 0.42;
+		}
+
+		.el-icon {
+			position: relative;
+			z-index: 1;
+			width: 42px;
+			height: 42px;
+			border-radius: 50%;
+			background: rgba(76, 52, 255, 0.72);
+			box-shadow: 0 4px 12px rgba(76, 52, 255, 0.2);
+		}
+	}
 			.flow {
 				margin-left: 10px;
 				flex: 1;
@@ -265,6 +327,25 @@
 						font-size: 12px;
 						color: #999;
 					}
+					.card-status {
+						font-family: Source Han Sans CN, Source Han Sans CN;
+						font-weight: 400;
+						font-size: 14px;
+						padding: 2px 6px;
+						border-radius: 4px;
+						color: #ffffff;
+						background: #999;
+
+						&.status-processing {
+							background: #1d6fe9;
+						}
+						&.status-handled {
+							background: #e6a23c;
+						}
+						&.status-completed {
+							background: #00b578;
+						}
+					}
 				}
 			}
 		}
@@ -291,6 +372,8 @@
 	.processBox {
 		display: flex;
 		flex-direction: column;
+		height: 650px;
+		overflow: auto;
 
 		.process {
 			height: 100%;

--
Gitblit v1.9.3