增加数据转换功能

This commit is contained in:
jingna 2026-01-08 17:47:28 +08:00
parent dbe37388af
commit 1d9cd42a42
4 changed files with 85 additions and 29 deletions

View File

@ -253,4 +253,12 @@ export function listTsFilesById(params:any){
method:'post',
params:params,
})
}
// 解压缩接口
export function splitFile(params:any){
return request ({
url:'/experimentalData/ts-files/splitFile',
method:'post',
params:params,
})
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 B

View File

@ -13,7 +13,10 @@ import { ElMessageBox, ElMessage, ElMain } from "element-plus";
import Page from '@/components/Pagination/page.vue';
import AudioPlayer from '@/components/file/preview/AudioPlayer.vue';
import { batchDeleteReq } from "@/api/file-operator";
import { tstaskList, obtaintestData, decompressionFolderData, getTsNodesTree, confirmDeleteNodes, addTsNodes, selectTsNodesByTskeId, updateTsNodes, deleteTsNodesById, tsFilesPage, addTsFiles, testDataScanById, updateTsFiles, deleteTsFilesById, listTsFiles, deleteTsFilesByIds, compress, Decompression, compare, downloadToLocal, uploadToBackup, addTsFile, list, moveFileFolder, copyFileFolder, startSimpleNavi, stopSimpleNavi, listTsFilesById } from "@/api/datamanagement";
import {
tstaskList, obtaintestData, decompressionFolderData, getTsNodesTree, confirmDeleteNodes, addTsNodes, selectTsNodesByTskeId, updateTsNodes, deleteTsNodesById, tsFilesPage, addTsFiles, testDataScanById, updateTsFiles, deleteTsFilesById, listTsFiles, deleteTsFilesByIds, compress, Decompression, compare, downloadToLocal, uploadToBackup, addTsFile, list, moveFileFolder, copyFileFolder,
startSimpleNavi, stopSimpleNavi, listTsFilesById, splitFile
} from "@/api/datamanagement";
import ZUpload from '@/components/file/ZUpload.vue'
import useFileUpload from "@/components/file/file/useFileUpload";
import useHeaderStorageList from "@/components/header/useHeaderStorageList";
@ -242,11 +245,11 @@ const treeForm = ref({
//
const treeRef = ref();
const filepath = ref('')
function gettreedata(type:string) {
function gettreedata(type: string) {
treeloading.value = true
if(type == '节点搜索' && treeForm.value.nodeName !== ''){
if (type == '节点搜索' && treeForm.value.nodeName !== '') {
treeForm.value.taskId = ''
}else{
} else {
treeForm.value.taskId = projectId.value
}
let keyar = projectArr.value.find(item => item.id === projectId.value);
@ -1639,7 +1642,7 @@ function openMap(row: any) {
getSSELink()
})
.catch(() => {
})
}
}
@ -1720,7 +1723,7 @@ function mapClose() {
}
// 1s/10s/30s/1m/2m/5m
const options = ref([
{
{
name: '10秒钟'
, id: 10
},
@ -1786,7 +1789,7 @@ function getSSELink() {
try {
const data = JSON.parse(e.data)
console.log('SSE消息:', data)
if(data.message == '配置文件选择错误,请重新选择!'){
if (data.message == '配置文件选择错误,请重新选择!') {
ElMessage.warning(data.message)
return
}
@ -1863,6 +1866,34 @@ const formatFileSize = (size: number): string => {
const txtradio: any = ref(null)
const pngradio: any = ref(null)
const configradio: any = ref(null)
const dataConversionDialog = ref(false)
const fvnsFileName = ref('')
const vinsFileName = ref('')
function dataConversionClose() {
dataConversionDialog.value = false
}
function dataConversion(row: any) {
const params = {
id: row.id,
taskId: row.taskId
}
loading.value = true
splitFile(params).then((res: any) => {
if (res.code == '0') {
fvnsFileName.value = res.data.fvns.fileName
vinsFileName.value = res.data.vins.fileName
loading.value = false
getdata()
dataConversionDialog.value = true
} else {
ElMessage.error(res.message)
loading.value = false
}
})
}
function isConversion(fileName: string) {
return fileName.includes('ins_frameSimu') && fileName.endsWith('.txt')
}
</script>
<template>
@ -1973,7 +2004,7 @@ const configradio: any = ref(null)
</el-table-column>
<el-table-column prop="uploader" width="80" label="上传人"></el-table-column>
<el-table-column prop="updateTime" width="170" label="修改日期"></el-table-column>
<el-table-column label="操作" width="140" align="center">
<el-table-column label="操作" width="160" align="center">
<template #default="scope">
<span
style="display: flex;display: -webkit-flex;justify-content: space-between;-webkit-justify-content: space-between; ">
@ -1981,10 +2012,10 @@ const configradio: any = ref(null)
style="cursor: pointer;"> -->
<img src="@/assets/project/chong.png" alt="" title="重命名" @click="editfile(scope.row, false)"
style="cursor: pointer;">
<img v-if="iftrackFile(scope.row.fileName)"
src="@/assets/MenuIcon/guiji.png" alt="" @click="openMap(scope.row)" title="轨迹预览图"
style="cursor: pointer;">
<img v-if="isConversion(scope.row.fileName)" src="@/assets/MenuIcon/datazh.png" alt=""
title="数据转换" @click="dataConversion(scope.row)" style="cursor: pointer;">
<img v-if="iftrackFile(scope.row.fileName)" src="@/assets/MenuIcon/guiji.png" alt=""
@click="openMap(scope.row)" title="轨迹预览图" style="cursor: pointer;">
<img src="@/assets/MenuIcon/lbcz_xg.png" alt="" @click="editfile(scope.row, true)"
title="修改" style="cursor: pointer;">
<img v-if="scope.row.type == 'ZIP'" src="@/assets/images/jieyasuo.png" alt=""
@ -2252,7 +2283,7 @@ const configradio: any = ref(null)
</el-dialog>
<!-- 轨迹地图 -->
<el-dialog title="轨迹地图/图表" v-model="mapTrajectory" :close-on-click-modal="false" :before-close="mapClose"
top="30px" draggable destroy-on-close>
top="30px" draggable destroy-on-close>
<div v-loading="pngloading">
<div class="map_select" style="margin-top: 0px;">
<div style="width: 220px;margin-top: 5px;">请选择配置文件(trj_config*.txt)</div>
@ -2359,7 +2390,19 @@ const configradio: any = ref(null)
top="30px" draggable width="60%" destroy-on-close>
<txtexl :file-url="fileUrl" :rowId="rowId" :taskId="projectId" />
</el-dialog>
<el-dialog :close-on-click-modal="false" title="数据转换" v-model="dataConversionDialog" :before-close="dataConversionClose"
top="30px" draggable width="30%" destroy-on-close>
<div style="text-align: center;">
<div style="color:#67c23a;font-size:16px;margin-bottom: 15px;"><span>数据转换成功</span></div>
<div style="font-size:16px;line-height: 1.5em;color:#409eff">
<div>{{fvnsFileName}}</div>
<div>{{vinsFileName}}</div>
</div>
</div>
<div style="width: 100%;display: flex;justify-content: end;margin-top: 10px;">
<el-button type="primary" @click="dataConversionClose">确定</el-button>
</div>
</el-dialog>
</div>
</template>

View File

@ -28,6 +28,7 @@ let result1 = ref([
{ name: '载机名称', code: 'carrier_name' },
{ name: '设备代号_编号', code: 'device_code' },
{ name: '试验描述', code: 'test_describe' },
{ name: '试验标签项', code: 'custom1' },
{ name: '传感器描述', code: 'sensor_describe' },
{ name: '本地存储空间', code: 'local_storage_id' },
{ name: '备份存储空间', code: 'backup_storage_id' },
@ -357,6 +358,7 @@ const projectForme: any = ref({
backupStorageId: '',
custom1: '',//
})
const isdouble = ref(false)
//
async function submitForm(formEl: any) {
if (!formEl) return
@ -380,6 +382,10 @@ async function submitForm(formEl: any) {
}else{
projectForme.value.custom1 = ''
}
if(isdouble.value){
return
}
isdouble.value = true
if (projectForme.value.id) {
updatetsTask(projectForme.value).then((res: any) => {
if (res.code == 0) {
@ -387,6 +393,7 @@ async function submitForm(formEl: any) {
ElMessage.success("修改成功")
frame.value = false
}
isdouble.value = false
})
} else {
addtsTask(projectForme.value).then((res: any) => {
@ -395,7 +402,7 @@ async function submitForm(formEl: any) {
ElMessage.success("添加成功")
frame.value = false
}
isdouble.value = false
})
}
}
@ -995,6 +1002,7 @@ function customSelectionChange(val: any) {
<template #default="scope">
<span
style="display: flex;display: -webkit-flex;justify-content: space-around;-webkit-justify-content: space-around; ">
<img src="@/assets/MenuIcon/lbcz_xg.png" alt="" title="修改" @click="editproject(scope.row)"
style="cursor: pointer;">
<img src="@/assets/MenuIcon/lbcz_sc.png" alt="" title="删除" @click="delproject(scope.row)"
@ -1072,23 +1080,23 @@ function customSelectionChange(val: any) {
<!-- <el-input :disabled="projectForme.id" v-model="projectForme.carrierName" maxlength="40"
show-word-limit /> -->
<div style="display: flex;width: 100%;">
<el-select :disabled="projectForme.id" v-model="projectForme.carrierName" filterable
<el-select :disabled="projectForme.modifiableStatus == '1' ? true : false" v-model="projectForme.carrierName" filterable
remote reserve-keyword style="width:100%" placeholder="请选择载机名称"
:remote-method="remoteMethod2" :loading="aircraftLoading"
@blur="blurChange('aircraftName', $event)">
<el-option v-for="item in aircraftOptions" :key="item" :label="item" :value="item">
</el-option>
</el-select>
<el-button :disabled="projectForme.id" style="padding: 0px 5px;margin-left: 5px;"
<el-button :disabled="projectForme.modifiableStatus == '1' ? true : false" style="padding: 0px 5px;margin-left: 5px;"
@click="saveSelect('aircraftName')"><img src="@/assets/MenuIcon/save.png" title="保存"
alt=""></el-button>
<el-button :disabled="projectForme.id" style="padding: 0px 5px;margin-left: 5px;"
<el-button :disabled="projectForme.modifiableStatus == '1' ? true : false" style="padding: 0px 5px;margin-left: 5px;"
@click="showSelectList('aircraftName')"><img src="@/assets/MenuIcon/set.png"
title="设置" alt=""></el-button>
</div>
</el-form-item>
<el-form-item label="设备代号_编号" prop="deviceCode" style="width: 50%;margin-left: 15px;">
<el-input :disabled="projectForme.id" v-model="projectForme.deviceCode" maxlength="40"
<el-input :disabled="projectForme.modifiableStatus == '1' ? true : false" v-model="projectForme.deviceCode" maxlength="40"
show-word-limit />
</el-form-item>
</div>
@ -1107,40 +1115,37 @@ function customSelectionChange(val: any) {
<el-option v-for="item in customMultpieOptions" :key="item" :label="item" :value="item">
</el-option>
</el-select> -->
<el-select :disabled="projectForme.id" v-model="customList" filterable remote
<el-select :disabled="projectForme.modifiableStatus == '1' ? true : false" v-model="customList" filterable remote
reserve-keyword style="width:100%" multiple placeholder="请选择试验标签项"
:remote-method="remoteMethod4" :loading="customMultpieLoading"
@blur="blurChange('taskLabel', $event)">
<el-option v-for="item in customMultpieOptions" :key="item" :label="item" :value="item">
</el-option>
</el-select>
<el-button :disabled="projectForme.id" style="padding: 0px 5px;margin-left: 5px;" @click="saveMultpieSelect"><img
<el-button :disabled="projectForme.modifiableStatus == '1' ? true : false" style="padding: 0px 5px;margin-left: 5px;" @click="saveMultpieSelect"><img
src="@/assets/MenuIcon/save.png" title="保存" alt=""></el-button>
<el-button :disabled="projectForme.id" style="padding: 0px 5px;margin-left: 5px;" @click="showMultpieSelectList"><img
<el-button :disabled="projectForme.modifiableStatus == '1' ? true : false" style="padding: 0px 5px;margin-left: 5px;" @click="showMultpieSelectList"><img
src="@/assets/MenuIcon/set.png" title="设置" alt=""></el-button>
</div>
</el-form-item>
<el-form-item label="传感器描述">
<!-- <el-input v-model="projectForme.sensorDescribe" :rows="7" type="textarea" show-word-limit /> -->
<div style="display: flex;width: 100%;">
<el-select :disabled="projectForme.id" v-model="projectForme.sensorDescribe" filterable
<el-select v-model="projectForme.sensorDescribe" filterable
remote reserve-keyword style="width:100%" placeholder="请选择传感器描述"
:remote-method="remoteMethod3" :loading="aircraftLoading"
@blur="blurChange('sensorDescription', $event)">
<el-option v-for="item in sensorDescribeOptions" :key="item" :label="item" :value="item">
</el-option>
</el-select>
<el-button :disabled="projectForme.id" style="padding: 0px 5px;margin-left: 5px;"
<el-button style="padding: 0px 5px;margin-left: 5px;"
@click="saveSelect('sensorDescription')"><img src="@/assets/MenuIcon/save.png"
title="保存" alt=""></el-button>
<el-button :disabled="projectForme.id" style="padding: 0px 5px;margin-left: 5px;"
<el-button style="padding: 0px 5px;margin-left: 5px;"
@click="showSelectList('sensorDescription')"><img src="@/assets/MenuIcon/set.png"
title="设置" alt=""></el-button>
</div>
</el-form-item>
<!-- <el-form-item label="设备名称">
<el-input v-model="projectForme.deviceName" maxlength="40" show-word-limit />
</el-form-item> -->
<el-form-item v-for="(item, index) in formitemarr" :key="index" :label="item.name">
<div style="width: 100%;display: flex;align-items: center;justify-content: space-between;">
<el-input v-model="item.data" style="width: 92%;" />
@ -1150,7 +1155,7 @@ function customSelectionChange(val: any) {
<div v-if="standAlone == false"
style="width: 100%;display: flex;justify-content: space-between;align-items: center;">
<el-form-item label="本地存储空间" prop="localStorageId" style="width: 50%;">
<el-select v-model="projectForme.localStorageId" clearable placeholder=" "
<el-select v-model="projectForme.localStorageId" clearable placeholder=" "
:disabled="!shidou">
<el-option v-for="item in localarr" :key="item.id" :label="item.name"
:value="item.id" />