增加数据转换功能

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

@ -254,3 +254,11 @@ export function listTsFilesById(params:any){
params:params, 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 Page from '@/components/Pagination/page.vue';
import AudioPlayer from '@/components/file/preview/AudioPlayer.vue'; import AudioPlayer from '@/components/file/preview/AudioPlayer.vue';
import { batchDeleteReq } from "@/api/file-operator"; 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 ZUpload from '@/components/file/ZUpload.vue'
import useFileUpload from "@/components/file/file/useFileUpload"; import useFileUpload from "@/components/file/file/useFileUpload";
import useHeaderStorageList from "@/components/header/useHeaderStorageList"; import useHeaderStorageList from "@/components/header/useHeaderStorageList";
@ -1863,6 +1866,34 @@ const formatFileSize = (size: number): string => {
const txtradio: any = ref(null) const txtradio: any = ref(null)
const pngradio: any = ref(null) const pngradio: any = ref(null)
const configradio: 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> </script>
<template> <template>
@ -1973,7 +2004,7 @@ const configradio: any = ref(null)
</el-table-column> </el-table-column>
<el-table-column prop="uploader" width="80" label="上传人"></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 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"> <template #default="scope">
<span <span
style="display: flex;display: -webkit-flex;justify-content: space-between;-webkit-justify-content: space-between; "> 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;"> --> style="cursor: pointer;"> -->
<img src="@/assets/project/chong.png" alt="" title="重命名" @click="editfile(scope.row, false)" <img src="@/assets/project/chong.png" alt="" title="重命名" @click="editfile(scope.row, false)"
style="cursor: pointer;"> style="cursor: pointer;">
<img v-if="isConversion(scope.row.fileName)" src="@/assets/MenuIcon/datazh.png" alt=""
<img v-if="iftrackFile(scope.row.fileName)" title="数据转换" @click="dataConversion(scope.row)" style="cursor: pointer;">
src="@/assets/MenuIcon/guiji.png" alt="" @click="openMap(scope.row)" title="轨迹预览图" <img v-if="iftrackFile(scope.row.fileName)" src="@/assets/MenuIcon/guiji.png" alt=""
style="cursor: pointer;"> @click="openMap(scope.row)" title="轨迹预览图" style="cursor: pointer;">
<img src="@/assets/MenuIcon/lbcz_xg.png" alt="" @click="editfile(scope.row, true)" <img src="@/assets/MenuIcon/lbcz_xg.png" alt="" @click="editfile(scope.row, true)"
title="修改" style="cursor: pointer;"> title="修改" style="cursor: pointer;">
<img v-if="scope.row.type == 'ZIP'" src="@/assets/images/jieyasuo.png" alt="" <img v-if="scope.row.type == 'ZIP'" src="@/assets/images/jieyasuo.png" alt=""
@ -2359,7 +2390,19 @@ const configradio: any = ref(null)
top="30px" draggable width="60%" destroy-on-close> top="30px" draggable width="60%" destroy-on-close>
<txtexl :file-url="fileUrl" :rowId="rowId" :taskId="projectId" /> <txtexl :file-url="fileUrl" :rowId="rowId" :taskId="projectId" />
</el-dialog> </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> </div>
</template> </template>

View File

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