applications/task-work-order/src/views/orderView/deviceInvocation/deviceCallRecord/FormDiaLog.vue
@@ -4,9 +4,23 @@ <!-- <div class="detail-row-view" v-if="dialogReadonly">--> <el-table :data="detailsList" class="gd-dialog-table"> <el-table-column type="index" show-overflow-tooltip label="序号" /> <el-table-column prop="deviceStatus" show-overflow-tooltip label="设备状态" /> <el-table-column prop="deviceStatus" show-overflow-tooltip label="设备状态" > <template v-slot="{ row }"> {{ getStatusText(row.deviceStatus) }} </template> </el-table-column> <el-table-column prop="occurTime" show-overflow-tooltip label="发生时间" /> </el-table> <div class="gd-pagination-parent"> <el-pagination popper-class="gd-select-popper" v-model:current-page="formData.current" v-model:page-size="formData.size" layout="total, prev, pager, next, sizes" :total="total" @change="loadDetail" /> </div> </el-dialog> </template> @@ -21,6 +35,7 @@ import { useRoute } from 'vue-router' const detailsList = ref([]) const total = ref(0) const initForm = () => ({ callId: '', @@ -54,21 +69,28 @@ const deptTree = ref([]) const route = useRoute() const validatePass = (rule, value, callback) => { if (value === '') { callback(new Error('请输入密码')) } else { callback() const statusList = ref(['待机','起飞准备','起飞准备完毕','手动飞行','自动起飞','航线飞行','全景拍照','智能跟随', 'ADS-B 躲避','自动返航','自动降落','强制降落','三桨叶降落','升级中','未连接','APAS','虚拟摇杆状态','指令飞行','空中 RTK 收敛模式', '机场选址中','POI环绕']) function getStatusText(statusIndex) { // 如果状态索引为 null、undefined 或无效 if (statusIndex === null || statusIndex === undefined || statusIndex === '') { return '--'; } } const validatePass2 = (rule, value, callback) => { if (value === '') { callback(new Error('请再次输入密码')) } else if (value !== formData.value.password) { callback(new Error('两次输入密码不一致')) } else { callback() // 将状态索引转换为数字 const index = Number(statusIndex); // 检查索引是否有效(在数组范围内) if (!isNaN(index) && index >= 0 && index < statusList.value.length) { return statusList.value[index]; } // 无效索引返回默认值 console.warn(`无效的设备状态索引: ${statusIndex}`); return '未知状态'; } @@ -78,8 +100,8 @@ } async function loadDetail(id) { formData.value.id = id const res = await getDeviceCallRecordDetails(formData) formData.value.id = id || formData.value.id const res = await getDeviceCallRecordDetails(formData.value) detailsList.value = res?.data?.data.records } applications/task-work-order/src/views/orderView/deviceInvocation/deviceCallRecord/index.vue
@@ -33,7 +33,7 @@ <el-select class="gd-select gray" popper-class="gd-select-popper" v-model="searchParams.taskInitiator" v-model="searchParams.taskInitiatorId" placeholder="请选择" clearable @change="handleSearch" @@ -75,7 +75,11 @@ <el-table-column prop="patrolTaskName" show-overflow-tooltip label="任务名称" /> <el-table-column prop="taskDepartment" show-overflow-tooltip label="发起任务部门" /> <el-table-column prop="taskInitiator" show-overflow-tooltip label="任务发起人" /> <el-table-column prop="flightDuration" show-overflow-tooltip label="飞行时长" /> <el-table-column prop="flightDuration" show-overflow-tooltip label="飞行时长"> <template v-slot="{ row }"> {{ formatDuration(row.flightDuration) }} </template> </el-table-column> <el-table-column prop="flightDistance" show-overflow-tooltip label="飞行里程(m)" /> <el-table-column prop="deviceName" show-overflow-tooltip label="执行设备" /> <el-table-column prop="planExecuteTime" show-overflow-tooltip label="计划执行时间" /> @@ -116,11 +120,12 @@ import FormDiaLog from './FormDiaLog.vue' import { saveOperationLog } from '@ztzf/apis' import { useRoute } from 'vue-router' import { getDictLabel } from '@ztzf/utils' const initSearchParams = () => ({ deviceId: '', patrolTaskName: '', taskInitiator: '', taskInitiatorId: '', current: 1, size: 10, }) @@ -144,7 +149,7 @@ async function getList() { loading.value = true try { const res = await getDeviceCallRecordPage(searchParams) const res = await getDeviceCallRecordPage(searchParams.value) list.value = res?.data?.data?.records ?? [] total.value = res?.data?.data?.total ?? 0 } finally { @@ -184,6 +189,29 @@ getList() } // 返回 '2m 5s' 格式 function formatDuration(seconds) { if (seconds === null || seconds === undefined || seconds === '') { return '--'; } // 如果小于60秒,直接显示秒 if (seconds < 60) { return `${seconds}秒`; } // 计算分钟和秒 const minutes = Math.floor(seconds / 60); const remainingSeconds = seconds % 60; // 组装显示字符串 if (remainingSeconds > 0) { return `${minutes}分${remainingSeconds}秒`; } else { return `${minutes}分`; } } function handleView(row) { dialogRef.value?.open({ mode: 'view', row: { ...row } })