实验数据管理转换数据上传配置文件

This commit is contained in:
jingna 2026-01-12 14:30:50 +08:00
parent 2ea468c04c
commit 95740388fd
3 changed files with 199 additions and 143 deletions

View File

@ -2,7 +2,7 @@ window.webConfig = {
"webApiBaseUrl": "https://edu.mmhyvision.com:8445",
"VITEAPPBASEWEB": "https://edu.mmhyvision.com/vision",
"webApiBaseApp": "https://edu.mmhyvision.com/parent",
"mapUrl":"http://192.168.1.166",
"mapUrl":"http://192.168.1.208",
"WebSocketUrl":"ws://192.168.1.166:8087",
"title": "文档与数据管理系统",
"bgImg": "beijing.jpg",

View File

@ -7,258 +7,261 @@ export function tstaskList() {
});
}
//获取试验任务节点树形结构
export function getTsNodesTree(params:any) {
export function getTsNodesTree(params: any) {
return request({
url: '/experimentalData/ts-nodes/getTsNodesTree',
method: 'post',
params:params,
params: params,
});
}
//增加试验任务节点
export function addTsNodes(params:any) {
export function addTsNodes(params: any) {
return request({
url: '/experimentalData/ts-nodes/addTsNodes',
method: 'post',
data:params,
data: params,
});
}
// 修改试验任务节点
export function updateTsNodes(params:any) {
export function updateTsNodes(params: any) {
return request({
url: '/experimentalData/ts-nodes/updateTsNodes',
method: 'post',
data:params,
data: params,
});
}
//根据ID删除试验任务节点
export function deleteTsNodesById(params:any) {
export function deleteTsNodesById(params: any) {
return request({
url: '/experimentalData/ts-nodes/deleteTsNodesById',
method: 'post',
params:params,
params: params,
});
}
//分页查询试验数据管理文档内容
export function tsFilesPage(params:any) {
export function tsFilesPage(params: any) {
return request({
url: '/experimentalData/ts-files/page',
method: 'get',
params:params,
params: params,
});
}
//新增试验数据管理文档内容
export function addTsFiles(params:any) {
export function addTsFiles(params: any) {
return request({
url: '/experimentalData/ts-files/addTsFiles',
method: 'post',
data:params,
data: params,
});
}
//修改试验数据管理文档内容
export function updateTsFiles(params:any) {
export function updateTsFiles(params: any) {
return request({
url: '/experimentalData/ts-files/updateTsFiles',
method: 'post',
data:params,
data: params,
});
}
//根据ID删除试验数据管理文档内容
export function deleteTsFilesById(params:any) {
export function deleteTsFilesById(params: any) {
return request({
url: '/experimentalData/ts-files/deleteTsFilesById',
method: 'post',
params:params,
params: params,
});
}
//批量删除试验数据管理文档内容
export function deleteTsFilesByIds(params:any) {
export function deleteTsFilesByIds(params: any) {
return request({
url: '/experimentalData/ts-files/deleteTsFilesByIds',
method: 'post',
params:params,
params: params,
});
}
//压缩
export function compress(params:any) {
export function compress(params: any) {
return request({
url: '/experimentalData/ts-files/compress',
method: 'post',
params:params,
params: params,
});
}
//解压
export function Decompression(params:any) {
export function Decompression(params: any) {
return request({
url: '/experimentalData/ts-files/decompression',
method: 'post',
params:params,
params: params,
});
}
//对比两个目录的文件差异
export function compare(params:any) {
export function compare(params: any) {
return request({
url: '/experimentalData/ts-files/compare',
method: 'post',
params:params,
params: params,
});
}
//从备份空间下载到工作空间
export function downloadToLocal(params:any) {
export function downloadToLocal(params: any) {
return request({
url: '/experimentalData/ts-files/downloadToLocal',
method: 'post',
params:params,
params: params,
});
}
//将文件上传到备份空间
export function uploadToBackup(params:any) {
export function uploadToBackup(params: any) {
return request({
url: '/experimentalData/ts-files/uploadToBackup',
method: 'post',
params:params,
params: params,
});
}
//新增试验数据管理文件夹
export function addTsFile(params:any) {
export function addTsFile(params: any) {
return request({
url: '/experimentalData/ts-files/addTsFile',
method: 'post',
data:params,
data: params,
});
}
//根据父项编码查询数据字典项数据
export function list(params:any){
return request ({
url:'/system/dictionaryItems/list',
method:'post',
params:params
export function list(params: any) {
return request({
url: '/system/dictionaryItems/list',
method: 'post',
params: params
})
}
//查询试验数据管理文件夹
export function listTsFiles(params:any){
return request ({
url:'/experimentalData/ts-files/listTsFiles',
method:'get',
params:params
export function listTsFiles(params: any) {
return request({
url: '/experimentalData/ts-files/listTsFiles',
method: 'get',
params: params
})
}
//移动
export function moveFileFolder(params:any){
return request ({
url:'/experimentalData/ts-files/moveFileFolder',
method:'post',
data:params
export function moveFileFolder(params: any) {
return request({
url: '/experimentalData/ts-files/moveFileFolder',
method: 'post',
data: params
})
}
//复制
export function copyFileFolder(params:any){
return request ({
url:'/experimentalData/ts-files/copyFileFolder',
method:'post',
data:params
export function copyFileFolder(params: any) {
return request({
url: '/experimentalData/ts-files/copyFileFolder',
method: 'post',
data: params
})
}
//定义频率
export function startSimpleNavi(params:any){
return request ({
url:'/experimentalData/ts-files/startSimpleNavi',
method:'post',
params:params
export function startSimpleNavi(params: any) {
return request({
url: '/experimentalData/ts-files/startSimpleNavi',
method: 'post',
params: params
})
}
//关闭
export function stopSimpleNavi(params:any){
return request ({
url:'/experimentalData/ts-files/stopSimpleNavi',
method:'post',
params:params
export function stopSimpleNavi(params: any) {
return request({
url: '/experimentalData/ts-files/stopSimpleNavi',
method: 'post',
params: params
})
}
//读取text文件
export function apicontent(params:any){
return request ({
url:'/experimentalData/ts-files/api/files/content',
method:'get',
params:params
export function apicontent(params: any) {
return request({
url: '/experimentalData/ts-files/api/files/content',
method: 'get',
params: params
})
}
//保存编辑的图片
export function saveContent(params:any){
return request ({
url:'/experimentalData/ts-files/save/files/content',
method:'post',
params:params,
export function saveContent(params: any) {
return request({
url: '/experimentalData/ts-files/save/files/content',
method: 'post',
params: params,
// headers: {
// 'Content-Type': 'application/json' // 明确指定内容类型
// }
})
}
//excel编辑保存
export function batchModify(params:any){
return request ({
url:'/experimentalData/ts-files/batchModify',
method:'post',
data:params,
export function batchModify(params: any) {
return request({
url: '/experimentalData/ts-files/batchModify',
method: 'post',
data: params,
})
}
//试验数据扫描接口通过试验任务ID
export function testDataScanById(params:any){
return request ({
url:'/experimentalData/ts-nodes/testDataScanById',
method:'post',
params:params,
export function testDataScanById(params: any) {
return request({
url: '/experimentalData/ts-nodes/testDataScanById',
method: 'post',
params: params,
})
}
//获取异步信息(扫描)
export function obtaintestData(params:any){
return request ({
url:'/experimentalData/ts-nodes/obtaintestData',
method:'post',
params:params,
export function obtaintestData(params: any) {
return request({
url: '/experimentalData/ts-nodes/obtaintestData',
method: 'post',
params: params,
})
}
//获取异步信息(解压)
export function decompressionFolderData(params:any){
return request ({
url:'/experimentalData/ts-files/decompressionFolderData',
method:'post',
params:params,
export function decompressionFolderData(params: any) {
return request({
url: '/experimentalData/ts-files/decompressionFolderData',
method: 'post',
params: params,
})
}
//判断节点
export function selectTsNodesByTskeId(params:any){
return request ({
url:'/experimentalData/ts-nodes/selectTsNodesByTskeId',
method:'post',
params:params,
export function selectTsNodesByTskeId(params: any) {
return request({
url: '/experimentalData/ts-nodes/selectTsNodesByTskeId',
method: 'post',
params: params,
})
}
export function confirmDeleteNodes(params:any){
return request ({
url:'/experimentalData/ts-nodes/confirmDeleteNodes',
method:'post',
params:params,
export function confirmDeleteNodes(params: any) {
return request({
url: '/experimentalData/ts-nodes/confirmDeleteNodes',
method: 'post',
params: params,
})
}
//获取文件相关的属性
export function listTsFilesById(params:any){
return request ({
url:'/experimentalData/ts-files/listTsFilesById',
method:'post',
params:params,
export function listTsFilesById(params: any) {
return request({
url: '/experimentalData/ts-files/listTsFilesById',
method: 'post',
params: params,
})
}
// 解压缩接口
export function splitFile(params:any){
return request ({
url:'/experimentalData/ts-files/splitFile',
method:'post',
params:params,
export function splitFile(params: any) {
return request({
url: '/experimentalData/ts-files/splitFile',
method: 'post',
data: params,
headers: {
'Content-Type': 'multipart/form-data'
}
})
}

View File

@ -48,6 +48,8 @@ import TextViewerAsyncLoading from "@/components/file/preview/TextViewerAsyncLoa
import MarkdownViewerDialogAsyncLoading from "@/components/file/preview/MarkdownViewerDialogAsyncLoading.vue";
import { display } from "html2canvas/dist/types/css/property-descriptors/display";
import { getDict } from '@/api/dict'
import type { UploadInstance } from 'element-plus'
import type { UploadProps } from 'element-plus'
const { dialogVideoVisible, dialogTextVisible, dialogPdfVisible, dialogOfficeVisible, dialog3dVisible } = useFilePreview();
const { clearALlFinishedUploadFile } = useFileUpload();
const { currentStorageKey } = useHeaderStorageList();
@ -1867,32 +1869,64 @@ const txtradio: any = ref(null)
const pngradio: any = ref(null)
const configradio: any = ref(null)
const dataConversionDialog = ref(false)
const isConversionSuccess = ref(false)
const fvnsFileName = ref('')
const vinsFileName = ref('')
const configFile = ref('')
const selectedFile = ref<File | null>(null);
const selectdata: any = ref({})
const conversionLoading = ref(false)
function dataConversionClose() {
dataConversionDialog.value = false
}
function delfiles() {
selectedFile.value = null
configFile.value = ''
}
function saveDataConversion() {
conversionLoading.value = true
const formData = new FormData();
if (selectedFile.value != null) {
formData.append('jsonFile', selectedFile.value);
}
formData.append('id', selectdata.value.id);
formData.append('taskId', selectdata.value.taskId);
splitFile(formData).then((res: any) => {
if (res.code == '0') {
fvnsFileName.value = res.data.FVNS.fileName
vinsFileName.value = res.data.VINS.fileName
getdata()
isConversionSuccess.value = true
conversionLoading.value = false
} else {
ElMessage.error(res.message)
conversionLoading.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
}
})
selectdata.value = params
configFile.value = ''
selectedFile.value = null
isConversionSuccess.value = false
dataConversionDialog.value = true
}
function isConversion(fileName: string) {
return fileName.includes('ins_frameSimu') && fileName.endsWith('.txt')
return fileName.endsWith('.txt')
}
const uploadRef = ref<UploadInstance>()
function handleFileChange(uploadFile: any) {
if (uploadFile.raw.type !== 'application/json') {
ElMessage.error('请上传.json 文件')
return
}
configFile.value = uploadFile.raw.name
const rawFile = uploadFile.raw
selectedFile.value = rawFile
}
</script>
@ -1931,7 +1965,7 @@ function isConversion(fileName: string) {
</template>
</el-tree>
<el-button type="primary" @click="scan()" style="width: 100%;" :loading="tonloading">{{ buttonmsg
}}</el-button>
}}</el-button>
</div>
<div class="moveBtn" v-move>
<div class="moveBtn-line"></div>
@ -2319,14 +2353,14 @@ function isConversion(fileName: string) {
<div style="width: 210px;margin-top: 5px;">请选择底图(支持png/jpg格式)</div>
<el-radio-group v-model="pngradio">
<el-radio v-for="(item, index) in pngArr" :value="item.id">{{ item.fileName
}}</el-radio>
}}</el-radio>
</el-radio-group>
</div>
<div class="map_select">
<div style="width: 220px;margin-top: 5px;">请选择地理信息文件(maps*.txt)</div>
<el-radio-group v-model="txtradio">
<el-radio v-for="(item, index) in txtArr" :value="item.id">{{ item.fileName
}}</el-radio>
}}</el-radio>
</el-radio-group>
</div>
<div style="width: 100%;display: flex;">
@ -2390,18 +2424,37 @@ function isConversion(fileName: string) {
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>
<el-dialog :close-on-click-modal="false" title="数据转换" v-model="dataConversionDialog"
:before-close="dataConversionClose" top="30px" draggable width="30%" destroy-on-close>
<div v-loading="conversionLoading">
<div v-if="isConversionSuccess" 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>
<div style="width: 100%;display: flex;justify-content: end;margin-top: 10px;">
<el-button type="primary" @click="dataConversionClose">确定</el-button>
<div v-else>
<div style="display: flex;align-items: center;width: 100%;">
<div style="min-width: max-content;">上传配置文件.json</div>
<div style="margin-right: 10px;width: 290px;border: 1px solid #dcdfe6;display: flex;justify-content: space-between;align-items: center;
border-radius: 4px;word-wrap: break-word;word-break: break-all;padding: 3px;min-height: 32px;">
{{ configFile }}
<CircleClose v-if="configFile !== ''" @click="delfiles"
style="width: 1em; height: 1em;margin-right: 3px; margin-right: 5px;min-width: 1em;cursor: pointer;" />
</div>
<el-upload ref="uploadRef" class="upload-demo" :show-file-list="false"
@change="handleFileChange" action=""
:auto-upload="false">
<el-button type="primary">上传</el-button>
</el-upload>
</div>
</div>
<div style="width: 100%;display: flex;justify-content: end;margin-top: 25px;">
<el-button v-if="isConversionSuccess" type="primary" @click="dataConversionClose">关闭</el-button>
<el-button v-else type="primary" @click="saveDataConversion">确定</el-button>
</div>
</div>
</el-dialog>
</div>
</template>