吉安感知网项目-前端
罗广辉
2026-06-06 74b3f7706a647708904a33c070b35f8ec41fe443
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<template>
    <el-dialog class="gd-dialog" v-model="visible" :title="dialogTitle" @closed="handleClosed" destroy-on-close
                         :close-on-click-modal="false">
        <!--        <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="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>
 
<script setup>
import { computed, onMounted, ref } from 'vue'
import { ElMessage } from 'element-plus'
import { getDeviceCallRecordDetails } from './deviceCallRecordApi'
import { getDeptTree } from '@/api/system/dept'
import { getRoleTree } from '@/api/system/role'
import func from '@/utils/func'
import { saveOperationLog } from '@ztzf/apis'
import { useRoute } from 'vue-router'
 
const detailsList = ref([])
const total = ref(0)
 
const initForm = () => ({
    callId: '',
    size: 10,
    current: 1
})
 
const treeProps = {
    label: 'title',
    children: 'children',
}
const deptTreeSelectProps = {
    label: 'name',
    value: 'id',
    children: 'children',
}
 
const emit = defineEmits(['success'])
const formRef = ref(null)
const formData = ref(initForm())
const visible = ref(false)
const dialogMode = ref('add')
const submitting = ref(false)
const dialogReadonly = computed(() => dialogMode.value === 'view')
const dialogTitle = computed(() => {
    if (dialogMode.value === 'edit') return '编辑'
    if (dialogMode.value === 'view') return '查看'
    return '新增'
})
const roleTree = ref([])
const deptTree = ref([])
const route = useRoute()
 
 
const statusList = ref(['待机','起飞准备','起飞准备完毕','手动飞行','自动起飞','航线飞行','全景拍照','智能跟随',
'ADS-B 躲避','自动返航','自动降落','强制降落','三桨叶降落','升级中','未连接','APAS','虚拟摇杆状态','指令飞行','空中 RTK 收敛模式',
'机场选址中','POI环绕'])
 
function getStatusText(statusIndex) {
    // 如果状态索引为 null、undefined 或无效
    if (statusIndex === null || statusIndex === undefined || statusIndex === '') {
        return '--';
    }
 
    // 将状态索引转换为数字
    const index = Number(statusIndex);
 
    // 检查索引是否有效(在数组范围内)
    if (!isNaN(index) && index >= 0 && index < statusList.value.length) {
        return statusList.value[index];
    }
 
    // 无效索引返回默认值
    console.warn(`无效的设备状态索引: ${statusIndex}`);
    return '未知状态';
}
 
 
 
function handleCancel() {
    visible.value = false
}
 
async function loadDetail(id) {
    formData.value.callId = id || formData.value.callId
    const res = await getDeviceCallRecordDetails(formData.value)
    detailsList.value = res?.data?.data.records || []
    total.value = res?.data?.data.total || 0
}
 
function handleClosed() {
    formData.value = initForm()
}
 
async function open({ mode, row } = {}) {
    dialogMode.value = mode || 'add'
    visible.value = true
    await loadDetail(row.id)
}
 
onMounted(() => {
})
 
defineExpose({ open })
</script>
 
<style scoped lang="scss">
:deep(.el-select) {
    width: 100%;
}
 
:deep(.el-date-editor) {
    width: 100%;
}
 
:deep(.el-tree-select) {
    width: 100%;
}
</style>