From 2ca94de8ede18ac07ccfd8dec7b6f6a707adde9b Mon Sep 17 00:00:00 2001
From: 张含笑 <zhx18749296735@163.com>
Date: Mon, 01 Sep 2025 11:20:24 +0800
Subject: [PATCH] Merge branch 'refs/heads/feature/v5.0/5.0.5' into patch_management

---
 src/views/job/components/TaskIntermediateContent/TaskIntermediateContent.vue |  115 +++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 70 insertions(+), 45 deletions(-)

diff --git a/src/views/job/components/TaskIntermediateContent/TaskIntermediateContent.vue b/src/views/job/components/TaskIntermediateContent/TaskIntermediateContent.vue
index 38d6221..d7941d3 100644
--- a/src/views/job/components/TaskIntermediateContent/TaskIntermediateContent.vue
+++ b/src/views/job/components/TaskIntermediateContent/TaskIntermediateContent.vue
@@ -10,10 +10,21 @@
 							'0') }}
 					</template>
 				</el-table-column>
-				<el-table-column prop="job_info_num" label="任务编号" show-overflow-tooltip align="center" />
-				<el-table-column prop="name" label="任务名称" show-overflow-tooltip align="center" />
-				<el-table-column prop="dept_name" label="所属部门" width="200" align="center" />
-				<el-table-column prop="device_names" label="所属机巢" />
+        <el-table-column prop="job_info_num" label="任务编号" width="160">
+          <template #default="scope">
+            <el-tooltip-copy :content="scope.row.job_info_num" :showCopyText="true">
+              {{scope.row.job_info_num}}
+            </el-tooltip-copy>
+          </template>
+        </el-table-column>
+        <el-table-column prop="name" label="任务编号" width="160">
+          <template #default="scope">
+            <el-tooltip-copy :content="scope.row.name" :showCopyText="true">
+              {{scope.row.name}}
+            </el-tooltip-copy>
+          </template>
+        </el-table-column>
+				<el-table-column prop="device_names" label="所属机巢" show-overflow-tooltip/>
 				<el-table-column prop="ai_type_str" label="关联算法" show-overflow-tooltip align="center" />
 				<el-table-column label="任务状态" align="center">
 					<template #default="scope">
@@ -58,46 +69,29 @@
 					</template>
 				</el-table-column>
 				<el-table-column prop="cycle_time_value" label="任务时间" show-overflow-tooltip />
+        <el-table-column prop="dept_name" label="创建部门" width="200" align="center" />
 				<el-table-column prop="creator_name" label="创建人" align="center" show-overflow-tooltip />
 				<el-table-column label="操作" width="200" align="center">
 					<template #default="scope">
-						<div
-							v-if="scope.row.status === 2"
-							class="btnItem"
-							link
-							type="primary"
-							@click="turnBack(scope.row)"
-						>
+						<!-- <el-button type="text" @click="rejectDetail(row.id)">驳回原因</el-button> -->
+						<el-button icon="el-icon-back" v-if="scope.row.status === 2" type="text"
+							@click="turnBack(scope.row)">
 							返航
-						</div>
-						<div
-							v-if="scope.row.status === 1"
-							class="btnItem"
-							link
-							type="primary"
-							@click="cancelTask(scope.row)"
-						>
+						</el-button>
+						<el-button icon="el-icon-close" v-if="scope.row.status === 1" type="text"
+							@click="cancelTask(scope.row)">
 							取消任务
-						</div>
-						<div class="btnItem" link type="primary" @click="handleDetail(scope.row)">查看</div>
+						</el-button>
+						<el-button icon="el-icon-view" type="text" @click="handleDetail(scope.row)">查看</el-button>
 					</template>
 				</el-table-column>
 			</el-table>
 		</div>
 		<div class="pagination">
-			<el-pagination
-				class="ztzf-pagination"
-				popper-class="custom-pagination-dropdown"
-				background
-				:page-sizes="[10, 20, 30, 40,50,100]"
-				:size="size"
-				v-model:current-page="jobListParams.current"
-				v-model:page-size="jobListParams.size"
-				layout="total, sizes, prev, pager, next, jumper"
-				:total="total"
-				@size-change="handleSizeChange"
-				@current-change="handleCurrentChange"
-			/>
+			<el-pagination class="ztzf-pagination" popper-class="custom-pagination-dropdown" background
+				:page-sizes="[10, 20, 30, 40, 50, 100]" :size="size" v-model:current-page="jobListParams.current"
+				v-model:page-size="jobListParams.size" layout="total, sizes, prev, pager, next, jumper" :total="total"
+				@size-change="handleSizeChange" @current-change="handleCurrentChange" />
 		</div>
 	</div>
 	<!-- 添加任务 -->
@@ -110,7 +104,7 @@
 	/> -->
 	<!-- 历史任务详情 -->
 	<DeviceJobDetails v-if="isShowDeviceJobDetails" v-model:show="isShowDeviceJobDetails" :wayLineJodInfoId="rowData.id"
-		:batchNo="rowData.batch_no" />
+		:batchNo="rowData.batch_no" :jobId="jobId"/>
 	<CancelTaskDialog ref="cancelTaskDialogRef" v-model:isShowCancelTask="isShowCancelTask" :row-data="rowData"
 		@refresh="getJobList" />
 </template>
@@ -119,12 +113,14 @@
 import SearchBox from '../SearchBox.vue'
 import AddTask from './AddTask.vue'
 // import CurrentTaskDetails from '@/components/CurrentTaskDetails/CurrentTaskDetails.vue'
-import { jobList, cancelJobs, taskReturnLines, returnHomeCluster } from '@/api/job/task'
+import { jobList, cancelJobs, taskReturnLines, returnHomeCluster, statusChangedApi } from '@/api/job/task';
 import { ElMessage } from 'element-plus'
 import DeviceJobDetails from '../DeviceJobDetails.vue'
 import CancelTaskDialog from '../CancelTaskDialog.vue'
 import { useStore } from 'vuex'
-import { cloneDeep } from 'lodash';
+import { cloneDeep } from 'lodash'
+import { inject, onBeforeUnmount } from 'vue';
+import ElTooltipCopy from '@/components/ElTooltipCopy.vue';
 const store = useStore()
 const singleUavHome = computed(() => store.state.home.singleUavHome)
 const jobListParams = reactive({
@@ -141,14 +137,14 @@
 
 // 获取任务列表
 const getJobList = () => {
-  const apiParams = {
-    ...cloneDeep(jobListParams),
-    searchParams: {
-      ...cloneDeep(jobListParams.searchParams),
-      status_list: jobListParams.searchParams.status || undefined,
-      status: undefined,
-    },
-  }
+	const apiParams = {
+		...cloneDeep(jobListParams),
+		searchParams: {
+			...cloneDeep(jobListParams.searchParams),
+			status_list: jobListParams.searchParams.status || undefined,
+			status: undefined,
+		},
+	}
 	jobList(apiParams).then(res => {
 		if (res.data.code !== 0) return
 		jobListData.value = res.data.data.records
@@ -170,10 +166,12 @@
 
 // 查看当前任务详情 如果是一台机则显示详情 如果是多台机则进入集群调度(暂未开发)
 let rowData = ref({})
+const jobId = ref('')
 const handleDetail = row => {
 	if (!row.device_sns.length) return ElMessage.warning('没有device_sns')
 	if (row.device_sns.length !== 1) return ElMessage.success('即将跳转到集群调度')
 	rowData.value = row ? row : {}
+jobId.value = rowData.value?.job_id
 	if (row.status === 2 || row.status === 1) {
 		// isShowCurrentTaskDetails.value = true
 		// 跳转大屏当前任务详情
@@ -247,6 +245,33 @@
 	})
 }
 
+function handleCellClick(row, column) {
+	if (column.no === 1) {
+		navigator.clipboard.writeText(row.job_info_num).then(() => {
+			ElMessage.success('复制任务编号成功')
+		})
+	} else if (column.no === 2) {
+		navigator.clipboard.writeText(row.name).then(() => {
+			ElMessage.success('复制任务名称成功')
+		})
+	}
+}
+
+
+const changeKey = inject('changeKey')
+// 轮询查询是否刷新
+const polling = setInterval(async () => {
+  const res = await statusChangedApi()
+  if (res.data.data.DEVICE_REFRESH || res.data.data.JOB_REFRESH) {
+    getJobList()
+    changeKey.value++
+  }
+}, 4000)
+
+onBeforeUnmount(() => {
+  clearInterval(polling)
+})
+
 onMounted(() => {
 	// getJobList()
 })

--
Gitblit v1.9.3