| | |
| | | <div class="flight"> |
| | | <div class="search-box"> |
| | | <el-form :model="params" inline> |
| | | <div style="display: flex;justify-content: space-between"> |
| | | <div> |
| | | <el-form-item label="日期:"> |
| | | <!-- <el-picker v-model="params.start_time" type="date" placeholder="开始日期" value-format="yyyy-MM-dd"></el-picker> --> |
| | | <el-date-picker |
| | | v-model="params.start_time" |
| | | v-model="rangTime" |
| | | type="daterange" |
| | | range-separator="至" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | clearable |
| | | @change="changeselect" |
| | | /> |
| | | </el-form-item> |
| | | </div> |
| | | <div> |
| | | <el-form-item> |
| | | <el-button type="primary" @click="getList">搜索</el-button> |
| | | <el-button @click="cancelSearch">取消</el-button> |
| | | </el-form-item> |
| | | </div> |
| | | </div> |
| | | </el-form> |
| | | <div> |
| | | <el-button :type="tabType === '全部'?'primary':'default'" @click="handleAll"><el-icon><Folder /></el-icon>全部</el-button> |
| | |
| | | {{ timeFormatConvert(scope.row.end_time) }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="end_time" label="标签" align="center"> |
| | | <template #default="scope"> |
| | | <el-select v-model="scope.row.label_id" @change="handleUpdateLabel(scope.row)"> |
| | | <el-option |
| | | v-for="item in tagList" |
| | | :key="item.id" |
| | | :label="item.label_name" |
| | | :value="item.id" |
| | | ></el-option> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作" width="200" align="center"> |
| | | <template #default="scope"> |
| | | <!-- <el-button icon="el-icon-view" type="text" @click="handleDetail(scope.row)">查看</el-button> --> |
| | | <!-- <el-button icon="el-icon-delete" type="text" @click="handleDelete">删除</el-button> --> |
| | | <el-button type="text" @click="handleStart"><el-icon><Star /></el-icon>收藏</el-button> |
| | | <el-button type="text" @click="handleExport"><el-icon><Download /></el-icon>导出</el-button> |
| | | <!-- <el-button icon="el-icon-delete" type="text" @click="handleDelete">删除</el-button> --> |
| | | <el-button type="text" @click="handleStar(scope.row)"> |
| | | <el-icon><Star /></el-icon> |
| | | {{ scope.row.is_favorite ? '取消收藏':'收藏' }}</el-button> |
| | | <el-button type="text" @click="handleExport(scope.row)"><el-icon><Download /></el-icon>导出</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | </el-dialog> --> |
| | | </template> |
| | | <script setup> |
| | | import { getHistoryTrack } from '@/api/logs'; |
| | | import { getHistoryTrack, cancelStar, addStar, updateDroneFlight } from '@/api/logs'; |
| | | import { flightLogPage } from '@/api/airspace/airspace'; |
| | | import { downloadXls } from '@/utils/util'; |
| | | import { exportBlob } from '@/api/common' |
| | | import { ElMessage, ElMessageBox, ElLoading } from 'element-plus'; |
| | | |
| | | const total = ref(0) |
| | | let rangTime = ref([]) |
| | | const params = ref({ |
| | | workspaceId: '6566662f-17c5-44f1-89d2-f09b37b81794', |
| | | page: '1', |
| | | page_size: '10', |
| | | isFavorite: false, |
| | | page: 1, |
| | | page_size: 10, |
| | | startTime: '', |
| | | endTime: '', |
| | | }); |
| | | |
| | | let tableList = ref([]) |
| | | |
| | | let isShowView = ref(false) |
| | | // let isShowView = ref(false) |
| | | |
| | | let rowView = ref({}) |
| | | // let rowView = ref({}) |
| | | |
| | | let isShowEditView = ref(false) |
| | | // let isShowEditView = ref(false) |
| | | |
| | | let tabType = ref('全部') |
| | | const ruleFormRef = ref() |
| | | let editParams = ref({ |
| | | model_name: '', |
| | | alg_type: '', |
| | | qua_rate: '', |
| | | pass_rate: '', |
| | | event_type: '', |
| | | remark: '' |
| | | }) |
| | | const rules = reactive({ |
| | | qua_rate: [ |
| | | { required: true, message: '请输入最低准确率', trigger: 'blur' }, |
| | | { |
| | | validator: (rule, value, callback) => { |
| | | if (!/^\d+(\.\d+)?$/.test(value)) { |
| | | callback(new Error('请输入有效的数字(整数或小数)')); |
| | | } else if (parseFloat(value) < 0.4) { |
| | | callback(new Error('最低准确率不能小于0.4')); |
| | | } else if (parseFloat(value) >= parseFloat(editParams.value.pass_rate)) { |
| | | callback(new Error('最低准确率必须小于最高准确率')); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }, |
| | | trigger: 'blur' |
| | | } |
| | | ], |
| | | pass_rate: [ |
| | | { required: true, message: '请输入最低准确率', trigger: 'blur' }, |
| | | { |
| | | validator: (rule, value, callback) => { |
| | | if (!/^\d+(\.\d+)?$/.test(value)) { |
| | | callback(new Error('请输入有效的数字(整数或小数)')); |
| | | } else if (parseFloat(value) > 0.8) { |
| | | callback(new Error('最高准确率不能大于0.8')); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }, |
| | | trigger: 'blur' |
| | | } |
| | | ], |
| | | event_type: [ |
| | | { |
| | | required: true, |
| | | message: '请选择事件生成类型', |
| | | trigger: 'change', |
| | | }, |
| | | ], |
| | | }) |
| | | // const ruleFormRef = ref() |
| | | // let editParams = ref({ |
| | | // model_name: '', |
| | | // alg_type: '', |
| | | // qua_rate: '', |
| | | // pass_rate: '', |
| | | // event_type: '', |
| | | // remark: '' |
| | | // }) |
| | | |
| | | function timeFormatConvert(time) { |
| | | if (!time) return '/' |
| | | const date = new Date(time); |
| | | return date.toLocaleString(); |
| | | } |
| | | |
| | | function cancelSearch() { |
| | | rangTime.value = [] |
| | | params.value = { |
| | | workspaceId: '', |
| | | startTime: '', |
| | | endTime: '', |
| | | isFavorite: false, |
| | | page: '1', |
| | | page_size: '10', |
| | | } |
| | |
| | | } |
| | | |
| | | function getList() { |
| | | params.value.startTime = rangTime.value?.length ? rangTime.value[0].getTime() : '' |
| | | params.value.endTime = rangTime.value?.length? new Date( |
| | | rangTime.value[1].getFullYear(), |
| | | rangTime.value[1].getMonth(), |
| | | rangTime.value[1].getDate(), |
| | | 23, 59, 59 |
| | | ).getTime() : '' |
| | | getHistoryTrack(params.value).then(res => { |
| | | tableList.value = res.data.data.list || [] |
| | | total.value = res.data.data.pagination.total || 0 |
| | | }) |
| | | } |
| | | function handleDetail(row) { |
| | | isShowView.value = true |
| | | rowView.value = row |
| | | } |
| | | function handleDelete(row) { |
| | | console.log(row) |
| | | } |
| | | function handleAdd(row) { |
| | | isShowEditView.value = true |
| | | // editParams.value = { ...row } |
| | | } |
| | | |
| | | function handleAll() { |
| | | params.value.isFavorite = false |
| | | params.value.page = 1 |
| | | tabType.value = '全部' |
| | | getList() |
| | | } |
| | | |
| | | function handleStartList() { |
| | | params.value.isFavorite = true |
| | | tabType.value = '收藏' |
| | | params.value.page = 1 |
| | | getList() |
| | | } |
| | | |
| | | async function submit(formValidate) { |
| | | if (!formValidate) return |
| | | await formValidate.validate((valid, fields) => { |
| | | if (valid) { |
| | | algorithmManageEdit(editParams.value).then(res => { |
| | | isShowEditView.value = false |
| | | getList() |
| | | }) |
| | | } |
| | | // async function submit(formValidate) { |
| | | // if (!formValidate) return |
| | | // await formValidate.validate((valid, fields) => { |
| | | // if (valid) { |
| | | // algorithmManageEdit(editParams.value).then(res => { |
| | | // isShowEditView.value = false |
| | | // getList() |
| | | // }) |
| | | // } |
| | | // }) |
| | | // } |
| | | |
| | | // 收藏 |
| | | function handleStar(row) { |
| | | if (row.is_favorite) { |
| | | cancelStar(row.id).then(res => { |
| | | ElMessage.success('取消收藏成功') |
| | | getList() |
| | | }) |
| | | } else { |
| | | addStar({ flight_log_id: row.id }).then(res => { |
| | | ElMessage.success('收藏成功') |
| | | getList() |
| | | }) |
| | | } |
| | | } |
| | | |
| | | // 打标签 |
| | | function handleUpdateLabel(row) { |
| | | updateDroneFlight({ id: row.id, label_id: row.label_id }).then(res => { |
| | | // getList() |
| | | ElMessage.success('标签成功') |
| | | }) |
| | | } |
| | | |
| | | // 导出 |
| | | function handleExport(row) { |
| | | exportBlob( |
| | | `/drone-device-core/log/droneFlightLogInfo/export/${row.id}` |
| | | ).then(res => { |
| | | downloadXls(res.data, `${row.job_name}.xlsx`) |
| | | }) |
| | | } |
| | | |
| | | // 日期选择 |
| | | // const changeselect = () => { |
| | | // params.value.startTime = rangTime.value[0] ? rangTime.value[0].getTime() : '' |
| | | // params.value.endTime = rangTime.value[1]? rangTime.value[1].getTime() : '' |
| | | // getList() |
| | | // }; |
| | | |
| | | function handleSizeChange(val) { |
| | | params.value.page_size = val |
| | |
| | | params.value.page = val |
| | | getList() |
| | | } |
| | | let tagList = ref([]) |
| | | function tagManageList() { |
| | | flightLogPage({ current:1, size: 99 }).then(res => { |
| | | tagList.value = res.data.data.records || [] |
| | | }) |
| | | } |
| | | |
| | | onMounted(() => { |
| | | tagManageList() |
| | | getList() |
| | | }) |
| | | </script> |