Merge remote-tracking branch 'origin/main'

This commit is contained in:
wanxiaoli 2026-01-12 15:20:56 +08:00
commit 3382188eca
3 changed files with 199 additions and 143 deletions

View File

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

View File

@ -7,258 +7,261 @@ export function tstaskList() {
}); });
} }
//获取试验任务节点树形结构 //获取试验任务节点树形结构
export function getTsNodesTree(params:any) { export function getTsNodesTree(params: any) {
return request({ return request({
url: '/experimentalData/ts-nodes/getTsNodesTree', url: '/experimentalData/ts-nodes/getTsNodesTree',
method: 'post', method: 'post',
params:params, params: params,
}); });
} }
//增加试验任务节点 //增加试验任务节点
export function addTsNodes(params:any) { export function addTsNodes(params: any) {
return request({ return request({
url: '/experimentalData/ts-nodes/addTsNodes', url: '/experimentalData/ts-nodes/addTsNodes',
method: 'post', method: 'post',
data:params, data: params,
}); });
} }
// 修改试验任务节点 // 修改试验任务节点
export function updateTsNodes(params:any) { export function updateTsNodes(params: any) {
return request({ return request({
url: '/experimentalData/ts-nodes/updateTsNodes', url: '/experimentalData/ts-nodes/updateTsNodes',
method: 'post', method: 'post',
data:params, data: params,
}); });
} }
//根据ID删除试验任务节点 //根据ID删除试验任务节点
export function deleteTsNodesById(params:any) { export function deleteTsNodesById(params: any) {
return request({ return request({
url: '/experimentalData/ts-nodes/deleteTsNodesById', url: '/experimentalData/ts-nodes/deleteTsNodesById',
method: 'post', method: 'post',
params:params, params: params,
}); });
} }
//分页查询试验数据管理文档内容 //分页查询试验数据管理文档内容
export function tsFilesPage(params:any) { export function tsFilesPage(params: any) {
return request({ return request({
url: '/experimentalData/ts-files/page', url: '/experimentalData/ts-files/page',
method: 'get', method: 'get',
params:params, params: params,
}); });
} }
//新增试验数据管理文档内容 //新增试验数据管理文档内容
export function addTsFiles(params:any) { export function addTsFiles(params: any) {
return request({ return request({
url: '/experimentalData/ts-files/addTsFiles', url: '/experimentalData/ts-files/addTsFiles',
method: 'post', method: 'post',
data:params, data: params,
}); });
} }
//修改试验数据管理文档内容 //修改试验数据管理文档内容
export function updateTsFiles(params:any) { export function updateTsFiles(params: any) {
return request({ return request({
url: '/experimentalData/ts-files/updateTsFiles', url: '/experimentalData/ts-files/updateTsFiles',
method: 'post', method: 'post',
data:params, data: params,
}); });
} }
//根据ID删除试验数据管理文档内容 //根据ID删除试验数据管理文档内容
export function deleteTsFilesById(params:any) { export function deleteTsFilesById(params: any) {
return request({ return request({
url: '/experimentalData/ts-files/deleteTsFilesById', url: '/experimentalData/ts-files/deleteTsFilesById',
method: 'post', method: 'post',
params:params, params: params,
}); });
} }
//批量删除试验数据管理文档内容 //批量删除试验数据管理文档内容
export function deleteTsFilesByIds(params:any) { export function deleteTsFilesByIds(params: any) {
return request({ return request({
url: '/experimentalData/ts-files/deleteTsFilesByIds', url: '/experimentalData/ts-files/deleteTsFilesByIds',
method: 'post', method: 'post',
params:params, params: params,
}); });
} }
//压缩 //压缩
export function compress(params:any) { export function compress(params: any) {
return request({ return request({
url: '/experimentalData/ts-files/compress', url: '/experimentalData/ts-files/compress',
method: 'post', method: 'post',
params:params, params: params,
}); });
} }
//解压 //解压
export function Decompression(params:any) { export function Decompression(params: any) {
return request({ return request({
url: '/experimentalData/ts-files/decompression', url: '/experimentalData/ts-files/decompression',
method: 'post', method: 'post',
params:params, params: params,
}); });
} }
//对比两个目录的文件差异 //对比两个目录的文件差异
export function compare(params:any) { export function compare(params: any) {
return request({ return request({
url: '/experimentalData/ts-files/compare', url: '/experimentalData/ts-files/compare',
method: 'post', method: 'post',
params:params, params: params,
}); });
} }
//从备份空间下载到工作空间 //从备份空间下载到工作空间
export function downloadToLocal(params:any) { export function downloadToLocal(params: any) {
return request({ return request({
url: '/experimentalData/ts-files/downloadToLocal', url: '/experimentalData/ts-files/downloadToLocal',
method: 'post', method: 'post',
params:params, params: params,
}); });
} }
//将文件上传到备份空间 //将文件上传到备份空间
export function uploadToBackup(params:any) { export function uploadToBackup(params: any) {
return request({ return request({
url: '/experimentalData/ts-files/uploadToBackup', url: '/experimentalData/ts-files/uploadToBackup',
method: 'post', method: 'post',
params:params, params: params,
}); });
} }
//新增试验数据管理文件夹 //新增试验数据管理文件夹
export function addTsFile(params:any) { export function addTsFile(params: any) {
return request({ return request({
url: '/experimentalData/ts-files/addTsFile', url: '/experimentalData/ts-files/addTsFile',
method: 'post', method: 'post',
data:params, data: params,
}); });
} }
//根据父项编码查询数据字典项数据 //根据父项编码查询数据字典项数据
export function list(params:any){ export function list(params: any) {
return request ({ return request({
url:'/system/dictionaryItems/list', url: '/system/dictionaryItems/list',
method:'post', method: 'post',
params:params params: params
}) })
} }
//查询试验数据管理文件夹 //查询试验数据管理文件夹
export function listTsFiles(params:any){ export function listTsFiles(params: any) {
return request ({ return request({
url:'/experimentalData/ts-files/listTsFiles', url: '/experimentalData/ts-files/listTsFiles',
method:'get', method: 'get',
params:params params: params
}) })
} }
//移动 //移动
export function moveFileFolder(params:any){ export function moveFileFolder(params: any) {
return request ({ return request({
url:'/experimentalData/ts-files/moveFileFolder', url: '/experimentalData/ts-files/moveFileFolder',
method:'post', method: 'post',
data:params data: params
}) })
} }
//复制 //复制
export function copyFileFolder(params:any){ export function copyFileFolder(params: any) {
return request ({ return request({
url:'/experimentalData/ts-files/copyFileFolder', url: '/experimentalData/ts-files/copyFileFolder',
method:'post', method: 'post',
data:params data: params
}) })
} }
//定义频率 //定义频率
export function startSimpleNavi(params:any){ export function startSimpleNavi(params: any) {
return request ({ return request({
url:'/experimentalData/ts-files/startSimpleNavi', url: '/experimentalData/ts-files/startSimpleNavi',
method:'post', method: 'post',
params:params params: params
}) })
} }
//关闭 //关闭
export function stopSimpleNavi(params:any){ export function stopSimpleNavi(params: any) {
return request ({ return request({
url:'/experimentalData/ts-files/stopSimpleNavi', url: '/experimentalData/ts-files/stopSimpleNavi',
method:'post', method: 'post',
params:params params: params
}) })
} }
//读取text文件 //读取text文件
export function apicontent(params:any){ export function apicontent(params: any) {
return request ({ return request({
url:'/experimentalData/ts-files/api/files/content', url: '/experimentalData/ts-files/api/files/content',
method:'get', method: 'get',
params:params params: params
}) })
} }
//保存编辑的图片 //保存编辑的图片
export function saveContent(params:any){ export function saveContent(params: any) {
return request ({ return request({
url:'/experimentalData/ts-files/save/files/content', url: '/experimentalData/ts-files/save/files/content',
method:'post', method: 'post',
params:params, params: params,
// headers: { // headers: {
// 'Content-Type': 'application/json' // 明确指定内容类型 // 'Content-Type': 'application/json' // 明确指定内容类型
// } // }
}) })
} }
//excel编辑保存 //excel编辑保存
export function batchModify(params:any){ export function batchModify(params: any) {
return request ({ return request({
url:'/experimentalData/ts-files/batchModify', url: '/experimentalData/ts-files/batchModify',
method:'post', method: 'post',
data:params, data: params,
}) })
} }
//试验数据扫描接口通过试验任务ID //试验数据扫描接口通过试验任务ID
export function testDataScanById(params:any){ export function testDataScanById(params: any) {
return request ({ return request({
url:'/experimentalData/ts-nodes/testDataScanById', url: '/experimentalData/ts-nodes/testDataScanById',
method:'post', method: 'post',
params:params, params: params,
}) })
} }
//获取异步信息(扫描) //获取异步信息(扫描)
export function obtaintestData(params:any){ export function obtaintestData(params: any) {
return request ({ return request({
url:'/experimentalData/ts-nodes/obtaintestData', url: '/experimentalData/ts-nodes/obtaintestData',
method:'post', method: 'post',
params:params, params: params,
}) })
} }
//获取异步信息(解压) //获取异步信息(解压)
export function decompressionFolderData(params:any){ export function decompressionFolderData(params: any) {
return request ({ return request({
url:'/experimentalData/ts-files/decompressionFolderData', url: '/experimentalData/ts-files/decompressionFolderData',
method:'post', method: 'post',
params:params, params: params,
}) })
} }
//判断节点 //判断节点
export function selectTsNodesByTskeId(params:any){ export function selectTsNodesByTskeId(params: any) {
return request ({ return request({
url:'/experimentalData/ts-nodes/selectTsNodesByTskeId', url: '/experimentalData/ts-nodes/selectTsNodesByTskeId',
method:'post', method: 'post',
params:params, params: params,
}) })
} }
export function confirmDeleteNodes(params:any){ export function confirmDeleteNodes(params: any) {
return request ({ return request({
url:'/experimentalData/ts-nodes/confirmDeleteNodes', url: '/experimentalData/ts-nodes/confirmDeleteNodes',
method:'post', method: 'post',
params:params, params: params,
}) })
} }
//获取文件相关的属性 //获取文件相关的属性
export function listTsFilesById(params:any){ export function listTsFilesById(params: any) {
return request ({ return request({
url:'/experimentalData/ts-files/listTsFilesById', url: '/experimentalData/ts-files/listTsFilesById',
method:'post', method: 'post',
params:params, params: params,
}) })
} }
// 解压缩接口 // 解压缩接口
export function splitFile(params:any){ export function splitFile(params: any) {
return request ({ return request({
url:'/experimentalData/ts-files/splitFile', url: '/experimentalData/ts-files/splitFile',
method:'post', method: 'post',
params:params, 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 MarkdownViewerDialogAsyncLoading from "@/components/file/preview/MarkdownViewerDialogAsyncLoading.vue";
import { display } from "html2canvas/dist/types/css/property-descriptors/display"; import { display } from "html2canvas/dist/types/css/property-descriptors/display";
import { getDict } from '@/api/dict' 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 { dialogVideoVisible, dialogTextVisible, dialogPdfVisible, dialogOfficeVisible, dialog3dVisible } = useFilePreview();
const { clearALlFinishedUploadFile } = useFileUpload(); const { clearALlFinishedUploadFile } = useFileUpload();
const { currentStorageKey } = useHeaderStorageList(); const { currentStorageKey } = useHeaderStorageList();
@ -1867,32 +1869,64 @@ 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 dataConversionDialog = ref(false)
const isConversionSuccess = ref(false)
const fvnsFileName = ref('') const fvnsFileName = ref('')
const vinsFileName = ref('') const vinsFileName = ref('')
const configFile = ref('')
const selectedFile = ref<File | null>(null);
const selectdata: any = ref({})
const conversionLoading = ref(false)
function dataConversionClose() { function dataConversionClose() {
dataConversionDialog.value = false 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 && res.code == '0') {
fvnsFileName.value = res.data.FVNS.fileName
vinsFileName.value = res.data.VINS.fileName
getdata()
isConversionSuccess.value = true
conversionLoading.value = false
} else {
conversionLoading.value = false
ElMessage.error('转换失败')
}
})
}
function dataConversion(row: any) { function dataConversion(row: any) {
const params = { const params = {
id: row.id, id: row.id,
taskId: row.taskId taskId: row.taskId
} }
loading.value = true selectdata.value = params
splitFile(params).then((res: any) => { configFile.value = ''
if (res.code == '0') { selectedFile.value = null
fvnsFileName.value = res.data.fvns.fileName isConversionSuccess.value = false
vinsFileName.value = res.data.vins.fileName dataConversionDialog.value = true
loading.value = false
getdata()
dataConversionDialog.value = true
} else {
ElMessage.error(res.message)
loading.value = false
}
})
} }
function isConversion(fileName: string) { 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> </script>
@ -1931,7 +1965,7 @@ function isConversion(fileName: string) {
</template> </template>
</el-tree> </el-tree>
<el-button type="primary" @click="scan()" style="width: 100%;" :loading="tonloading">{{ buttonmsg <el-button type="primary" @click="scan()" style="width: 100%;" :loading="tonloading">{{ buttonmsg
}}</el-button> }}</el-button>
</div> </div>
<div class="moveBtn" v-move> <div class="moveBtn" v-move>
<div class="moveBtn-line"></div> <div class="moveBtn-line"></div>
@ -2319,14 +2353,14 @@ function isConversion(fileName: string) {
<div style="width: 210px;margin-top: 5px;">请选择底图(支持png/jpg格式)</div> <div style="width: 210px;margin-top: 5px;">请选择底图(支持png/jpg格式)</div>
<el-radio-group v-model="pngradio"> <el-radio-group v-model="pngradio">
<el-radio v-for="(item, index) in pngArr" :value="item.id">{{ item.fileName <el-radio v-for="(item, index) in pngArr" :value="item.id">{{ item.fileName
}}</el-radio> }}</el-radio>
</el-radio-group> </el-radio-group>
</div> </div>
<div class="map_select"> <div class="map_select">
<div style="width: 220px;margin-top: 5px;">请选择地理信息文件(maps*.txt)</div> <div style="width: 220px;margin-top: 5px;">请选择地理信息文件(maps*.txt)</div>
<el-radio-group v-model="txtradio"> <el-radio-group v-model="txtradio">
<el-radio v-for="(item, index) in txtArr" :value="item.id">{{ item.fileName <el-radio v-for="(item, index) in txtArr" :value="item.id">{{ item.fileName
}}</el-radio> }}</el-radio>
</el-radio-group> </el-radio-group>
</div> </div>
<div style="width: 100%;display: flex;"> <div style="width: 100%;display: flex;">
@ -2390,18 +2424,37 @@ function isConversion(fileName: string) {
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" <el-dialog :close-on-click-modal="false" title="数据转换" v-model="dataConversionDialog"
top="30px" draggable width="30%" destroy-on-close> :before-close="dataConversionClose" top="30px" draggable width="30%" destroy-on-close>
<div style="text-align: center;"> <div v-loading="conversionLoading">
<div style="color:#67c23a;font-size:16px;margin-bottom: 15px;"><span>数据转换成功</span></div> <div v-if="isConversionSuccess" style="text-align: center;">
<div style="font-size:16px;line-height: 1.5em;color:#409eff"> <div style="color:#67c23a;font-size:16px;margin-bottom: 15px;"><span>数据转换成功</span></div>
<div>{{fvnsFileName}}</div> <div style="font-size:16px;line-height: 1.5em;color:#409eff">
<div>{{vinsFileName}}</div> <div>{{ fvnsFileName }}</div>
<div>{{ vinsFileName }}</div>
</div>
</div> </div>
</div> <div v-else>
<div style="width: 100%;display: flex;justify-content: end;margin-top: 10px;"> <div style="display: flex;align-items: center;width: 100%;">
<el-button type="primary" @click="dataConversionClose">确定</el-button> <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>
<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> </el-dialog>
</div> </div>
</template> </template>