1
0

8 Commits 631b76c696 ... f2d8555bb6

Autor SHA1 Nachricht Datum
  28968 f2d8555bb6 fix: bug fix vor 3 Monaten
  allen a586bc6e42 Merge branch 'dev_wk2' into develop vor 3 Monaten
  Sk18834839360 7b08c79fb0 Merge branch 'dev_lsk_zip' of www/taais-web into develop vor 3 Monaten
  Suuuuuukang ca0abb7bb1 feat: 添加多目标检测导入模型、多源信息融合、异源图像匹配的文件说明 vor 3 Monaten
  Sk18834839360 c435e9e8ae Merge branch 'dev_lsk_sjkz' of www/taais-web into develop vor 3 Monaten
  WANGKANG 25ae37b53c feat: 压缩包添加标签提示 vor 4 Monaten
  Suuuuuukang 1bddbd0eb4 feat: 添加打开文件夹功能 vor 4 Monaten
  Suuuuuukang 05953bbe67 fix: 修改数据扩增显示细节 vor 4 Monaten

+ 1 - 1
.env

@@ -1,5 +1,5 @@
 # title
-VITE_GLOB_APP_TITLE = 算法任务系统
+VITE_GLOB_APP_TITLE = 目标捕获技术设计支撑环境
 
 # 本地运行端口号
 VITE_PORT = 8848

+ 2 - 2
src/layouts/LayoutTransverse/index.scss

@@ -15,11 +15,11 @@
       margin-right: 30px;
       .logo-img {
         width: 28px;
-        object-fit: contain;
         margin-right: 6px;
+        object-fit: contain;
       }
       .logo-text {
-        font-size: 21.5px;
+        font-size: 19px;
         font-weight: bold;
         color: var(--el-header-logo-text-color);
         white-space: nowrap;

+ 1 - 1
src/layouts/LayoutTransverse/index.vue

@@ -4,7 +4,7 @@
     <el-header>
       <div class="logo flx-center">
         <img class="logo-img" src="@/assets/images/logo.svg" alt="logo" />
-        <span class="logo-text">{{ title }}</span>
+        <span class="logo-text">{{ title }} </span>
       </div>
       <el-menu mode="horizontal" :router="false" :default-active="activeMenu">
         <!-- 不能直接使用 SubMenu 组件,无法触发 el-menu 隐藏省略功能 -->

+ 12 - 0
src/views/demo/TargetDetection/index.vue

@@ -159,6 +159,16 @@ import { addAlgorithmModelTrackApi } from '@/api/modules/demo/AlgorithmModelTrac
 import useWebSocketStore from '@/stores/modules/websocket'
 import { resetHeart } from '@/utils/websocket'
 
+import { getDictsApi } from '@/api/modules/system/dictData'
+const zipFileDescDict = ref<any>({})
+onMounted(async () => {
+  const res = await getDictsApi('zip_file_format_description')
+  for (let i = 0; i < res.data.length; i++) {
+    const item = res.data[i]
+    zipFileDescDict.value[item.dictValue] = item.remark
+  }
+})
+
 onMounted(() => {
   const websocketStore = useWebSocketStore()
   websocketStore.websocket.onmessage = (e: any) => {
@@ -280,6 +290,7 @@ const stopTargetDetect = async (params: any) => {
 
 import statusEnums from '@/utils/status'
 import { AlgorithmType, SubSystem, SubSystem__, enumsAlgorithmType, enumsSubSystem } from '@/views/demo/utils'
+import { getDictsApi } from '@/api/modules/system/dictData'
 
 const dowloadTargetDetection = async (params: any) => {
   await useDownload(dowloadTargetDetectionApi, params.name, params.id, true, '.zip')
@@ -590,6 +601,7 @@ const setItemsOptions = () => {
       label: '上传数据集',
       prop: 'inputOssId',
       rules: [{ required: true, message: '数据集不能为空', trigger: 'blur' }],
+      tooltip: zipFileDescDict.value['target_detection'],
       compOptions: {
         elTagName: 'file-upload',
         fileSize: 4096,

+ 37 - 4
src/views/demo/algorithmTaskTrack/index.vue

@@ -71,7 +71,15 @@
             <el-option v-for="item in datasetList" :key="item.value" :label="item.label" :value="item.value" />
           </el-select>
         </el-form-item>
-        <el-form-item label="上传数据集" prop="inputDatasetOssId">
+        <el-form-item prop="inputDatasetOssId">
+          <template #label>
+            <el-space :size="4">
+              <span class="label-span">上传数据集</span>
+              <el-tooltip effect="dark" :content="zipFileDescDict.total_task_dataset" placement="top">
+                <i :class="'iconfont icon-yiwen'"></i>
+              </el-tooltip>
+            </el-space>
+          </template>
           <File ref="fileUploadRef" :file-type="['zip']" :file-size="4096" @update:model-value="fileUploadDatasetChange" />
         </el-form-item>
         <el-form-item label="选择视觉算法" prop="trackSequenceAlgorithmId">
@@ -102,8 +110,22 @@
         <el-form-item label="是否评估" prop="ifEvaluate">
           <el-checkbox v-model="formAddTask.ifEvaluate" />
         </el-form-item>
-        <el-form-item label="上传真实标签" prop="inputEvaluateLabelOssId" v-show="formAddTask.ifEvaluate">
-          <File ref="fileUploadEvaluateLabelRef" :model-value="formAddTask.inputEvaluateLabelOssId" :file-type="['txt']" :file-size="4096" @update:model-value="fileUploadChangeEvaluateLabel" />
+        <el-form-item prop="inputEvaluateLabelOssId" v-show="formAddTask.ifEvaluate">
+          <template #label>
+            <el-space :size="4">
+              <span class="label-span">上传真实标签</span>
+              <el-tooltip effect="dark" :content="zipFileDescDict.total_task_label" placement="top">
+                <i :class="'iconfont icon-yiwen'"></i>
+              </el-tooltip>
+            </el-space>
+          </template>
+          <File
+            ref="fileUploadEvaluateLabelRef"
+            :model-value="formAddTask.inputEvaluateLabelOssId"
+            :file-type="['txt']"
+            :file-size="4096"
+            @update:model-value="fileUploadChangeEvaluateLabel"
+          />
         </el-form-item>
         <el-form-item label="选择视觉评估算法" prop="trackSequenceEvaluateAlgorithmId" v-show="formAddTask.ifEvaluate">
           <div class="form-item1">
@@ -328,6 +350,17 @@ import ShowStatisticResult from '@/views/demo/components/ShowStatisticResult.vue
 import useWebSocketStore from '@/stores/modules/websocket'
 import { resetHeart } from '@/utils/websocket'
 
+import { getDictsApi } from '@/api/modules/system/dictData'
+
+const zipFileDescDict = ref<any>({})
+onMounted(async () => {
+  const res = await getDictsApi('zip_file_format_description')
+  for (let i = 0; i < res.data.length; i++) {
+    const item = res.data[i]
+    zipFileDescDict.value[item.dictValue] = item.remark
+  }
+})
+
 onMounted(() => {
   const websocketStore = useWebSocketStore()
   websocketStore.websocket.onmessage = (e: any) => {
@@ -936,7 +969,7 @@ const getItemsOptions = async (algorithmId: any) => {
         // 添加新的表单项选项
         itemsOptions_new.push({
           label: item['name'],
-          labelWidth: "200px",
+          labelWidth: '200px',
           prop: item['agName'],
           rules: [{ required: item['required'], message: item['agName'] + '不能为空', trigger: 'blur' }],
           tooltip: item['prompt'],

+ 17 - 1
src/views/demo/match/index.vue

@@ -66,7 +66,12 @@
         <el-input v-model="formData.name" placeholder="请输入任务名称"></el-input>
       </el-container>
       <el-container style="margin-top: 20px">
-        <span class="span_class">任务文件</span>
+        <span class="span_class">
+            任务文件
+            <el-tooltip :content="fileDescription" placement="top">
+              <el-icon><InfoFilled /></el-icon>
+            </el-tooltip>
+        </span>
         <file @update:model-value="updateFile" :file-size="2048" :file-type="['zip']"></file>
       </el-container>
 
@@ -245,6 +250,7 @@ const stopTask = function (row) {
   })
 }
 
+const fileDescription = ref('')
 const jsonParams = ref([])
 const dialogVisible = ref(false)
 const openCreateDialog = async function () {
@@ -255,6 +261,16 @@ const openCreateDialog = async function () {
     name: '',
     file: null
   }
+
+  let _res = await getDictsApi('zip_file_format_description')
+
+  _res.data.forEach(item => {
+    // 检查item对象是否包含dict和des属性
+    if (item.dictLabel === '异源图像匹配') {
+      fileDescription.value = item.remark
+    }
+  })
+
   dialogVisible.value = true
 }
 const formData = ref({

+ 13 - 1
src/views/demo/toInfrared/index.vue

@@ -24,7 +24,7 @@
       </template>
       <!-- 表格操作 -->
       <template #operation="scope">
-        <el-button type="primary" link icon="View" @click="openDialog(3, '详情', scope.row)"> 详情 </el-button>
+        <el-button type="primary" link icon="View" @click="openDialog(3, '详情', scope.row)"> 详情</el-button>
         <el-button type="primary" link icon="EditPen" v-auth="['demo:toInfrared:edit']" @click="openDialog(2, '编辑', scope.row)"> 编辑 </el-button>
         <el-button
           type="primary"
@@ -170,6 +170,7 @@ import {
 } from '@/api/modules/demo/toInfrared'
 
 import { getImagesApi, listDataSeqApi } from '@/api/modules/demo/DataSeq'
+import { getDictsApi } from '@/api/modules/system/dictData'
 
 import { enumAlgorithmModelTrackApi, addAlgorithmModelTrackApi, getAlgorithmModelTrackApi } from '@/api/modules/demo/AlgorithmModelTrack'
 import { enumAlgorithmConfigTrackApi, getAlgorithmConfigTrackApi } from '@/api/modules/demo/AlgorithmConfigTrack'
@@ -180,8 +181,18 @@ import ViewLog from '@/views/demo/components/ViewLog.vue'
 import useWebSocketStore from '@/stores/modules/websocket'
 import { resetHeart } from '@/utils/websocket'
 import ShowStatisticResult from '@/views/demo/components/ShowStatisticResult.vue'
+
 const showStatisticResultRef = ref()
 
+const zipFileDescDict = ref<any>({})
+onMounted(async () => {
+  const res = await getDictsApi('zip_file_format_description')
+  for (let i = 0; i < res.data.length; i++) {
+    const item = res.data[i]
+    zipFileDescDict.value[item.dictValue] = item.remark
+  }
+})
+
 onMounted(() => {
   const websocketStore = useWebSocketStore()
   websocketStore.websocket.onmessage = (e: any) => {
@@ -610,6 +621,7 @@ const setItemsOptions = () => {
       label: '上传数据集',
       prop: 'inputOssId',
       rules: [{ required: false, message: '数据集不能为空', trigger: 'blur' }],
+      tooltip: zipFileDescDict.value['to_infrared'],
       compOptions: {
         elTagName: 'file-upload',
         fileSize: 4096,

+ 18 - 2
src/views/demo/traceMerge/index.vue

@@ -45,7 +45,13 @@
           <el-input v-model="params.name" placeholder="请输入任务名称"></el-input>
         </el-container>
         <el-container style="margin-top: 20px">
-          <span style="min-width: 80px">任务文件</span>
+          <span style="min-width: 80px">
+            任务文件
+            <el-tooltip :content="fileDescription" placement="top">
+              <el-icon><InfoFilled /></el-icon>
+            </el-tooltip>
+          </span>
+
           <file @update:model-value="updateFiles" :file-size="20" :file-type="['mat', 'json', 'txt']"></file>
         </el-container>
         <el-container v-for="(item, index) in jsonParams" :key="index" style="align-items: center; margin-top: 5px">
@@ -208,12 +214,22 @@ const stopTask = function (row) {
     }
   })
 }
-
+const fileDescription = ref('')
 const jsonParams = ref([])
 const createTask = async function () {
   const res = await getOneAlgorithmConfigApi({ algorithmName: '多源信息融合' })
   // console.log(res)
   jsonParams.value = JSON.parse(res.data.parameters)
+
+  let _res = await getDictsApi('zip_file_format_description')
+
+  _res.data.forEach(item => {
+    // 检查item对象是否包含dict和des属性
+    if (item.dictLabel === '多源信息融合') {
+      fileDescription.value = item.remark
+    }
+  })
+
   createTaskDialogVisible.value = true
   params.value = {
     preprocessPath: null,

+ 14 - 1
src/views/demo/trackSequence/index.vue

@@ -210,6 +210,16 @@ import PreviewCompareImages from '@/views/demo/components/PreviewCompareImages.v
 import ShowStatisticResult from '@/views/demo/components/ShowStatisticResult.vue'
 import { getTargetDetectionApi } from '@/api/modules/demo/TargetDetection'
 
+import { getDictsApi } from '@/api/modules/system/dictData'
+const zipFileDescDict = ref<any>({})
+onMounted(async () => {
+  const res = await getDictsApi('zip_file_format_description')
+  for (let i = 0; i < res.data.length; i++) {
+    const item = res.data[i]
+    zipFileDescDict.value[item.dictValue] = item.remark
+  }
+})
+
 const showStatisticResultRef = ref()
 const showEvaluateResultRef = ref()
 
@@ -352,6 +362,7 @@ const setItemsOptionsAddCAT = () => {
       label: '上传数据集',
       prop: 'inputOssId',
       rules: [{ required: false, message: '数据集不能为空', trigger: 'blur' }],
+      tooltip: zipFileDescDict.value['track_sequence'],
       compOptions: {
         elTagName: 'file-upload',
         fileSize: 4096,
@@ -451,7 +462,7 @@ const showEvaluate = (row: any) => {
       }
     },
     {
-      label: "上传Label文件",
+      label: '上传Label文件',
       prop: 'inputLabelOssId',
       rules: [{ required: false, message: '请上传Label文件', trigger: 'blur' }],
       compOptions: {
@@ -773,6 +784,7 @@ const setItemsOptions = () => {
       label: '上传数据集',
       prop: 'inputOssId',
       rules: [{ required: false, message: '数据集不能为空', trigger: 'blur' }],
+      tooltip: zipFileDescDict.value['track_sequence'],
       compOptions: {
         elTagName: 'file-upload',
         fileSize: 4096,
@@ -860,6 +872,7 @@ const setItemsOptions = () => {
       label: '上传标签',
       prop: 'inputLabelOssId',
       rules: [{ required: true, message: '标签不能为空', trigger: 'blur' }],
+      tooltip: zipFileDescDict.value['track_sequence_label'],
       show: params => {
         if (params.value.type == AlgorithmType2['测试']) {
           return true

+ 1 - 1
src/views/login/index.scss

@@ -47,7 +47,7 @@
         .logo-text {
           padding: 0 0 0 25px;
           margin: 0;
-          font-size: 42px;
+          font-size: 30px;
           font-weight: bold;
           color: #34495e;
           white-space: nowrap;

+ 1 - 1
src/views/login/index.vue

@@ -8,7 +8,7 @@
       <div class="login-form">
         <div class="login-logo">
           <img class="login-icon" src="@/assets/images/logo.svg" alt="" />
-          <h2 class="logo-text">算法任务系统</h2>
+          <h2 class="logo-text">目标捕获技术设计支撑环境</h2>
         </div>
         <LoginForm />
       </div>

+ 12 - 2
src/views/taais/homePage/task/index.vue

@@ -189,7 +189,7 @@ import FormDialog from '@/components/FormDialog/index.vue'
 import { useRouter } from 'vue-router'
 import { listTaskConfigurationApi } from '@/api/modules/task/taskConfiguration'
 import { amplifyApi, batchListDataApi } from '@/api/modules/demo/data'
-import { listDataApi } from '@/api/modules/system/dictData'
+import {getDictsApi, listDataApi} from '@/api/modules/system/dictData'
 import { ElMessage } from 'element-plus'
 import AmplifyForm from '@/views/demo/data/AmplifyForm.vue'
 
@@ -542,7 +542,8 @@ const onAlgorithmModelSelect = index => {
 const formDialogRef = ref<InstanceType<typeof FormDialog> | null>(null)
 
 let UPDATE_INDEX = ref({ id: null, idx: null })
-const showAddModelDialog = (item, index) => {
+const fileDescription = ref('')
+const showAddModelDialog = async (item, index) => {
   let _id = null
   try {
     _id = item.id
@@ -558,6 +559,14 @@ const showAddModelDialog = (item, index) => {
     id: _id,
     idx: index
   }
+  let _res = await getDictsApi('zip_file_format_description')
+
+  _res.data.forEach(item => {
+    // 检查item对象是否包含dict和des属性
+    if (item.dictLabel === '多目标检测导入模型') {
+      fileDescription.value = item.remark
+    }
+  })
   const params = {
     title: '算法模型配置',
     width: 580,
@@ -573,6 +582,7 @@ const showAddModelDialog = (item, index) => {
       },
       {
         label: '模型',
+        tooltip: fileDescription,
         prop: 'modelAddress',
         rules: [], //{ required: true, message: '模型不能为空', trigger: 'blur' }
         compOptions: {

+ 4 - 4
src/views/task/amplify/index.vue

@@ -715,7 +715,7 @@ const columns = reactive<ColumnProps<any>[]>([
   },
   {
     prop: 'inputImagePath',
-    label: '预处理数据路径'
+    label: '剩余任务数'
   },
   {
     prop: 'outputImagePath',
@@ -736,7 +736,7 @@ const columns = reactive<ColumnProps<any>[]>([
   },
   {
     prop: 'costSecond',
-    label: '耗时(ms)'
+    label: '耗时'
   },
   {
     prop: 'log',
@@ -806,10 +806,10 @@ const setItemsOptions = () => {
       }
     },
     {
-      label: '预处理数据路径',
+      label: '剩余任务数',
       prop: 'inputImagePath',
       compOptions: {
-        placeholder: '请输入预处理数据路径'
+        placeholder: '剩余任务数'
       }
     },
     {

+ 8 - 0
src/views/task/bizProcess/index.vue

@@ -60,6 +60,7 @@
           查看日志
         </el-button>
 
+        <el-button type="primary" link icon="Refresh" @click="openDir(scope.row)"> 打开文件夹 </el-button>
         <el-button type="primary" link icon="Refresh" @click="exportData(scope.row)"> 导出结果 </el-button>
       </template>
     </ProTable>
@@ -323,6 +324,13 @@ const exportData = row => {
   })
 }
 
+const openDir = row => {
+  console.log(row)
+  http.get<any>('/identification/identificationSubtaskDetails/openDir', { directory: row.preprocessPath }, { loading: true }).then(res => {
+    console.log(res)
+  })
+}
+
 let imgDataList = ref(reactive([]))
 let titleMsg = ref('')
 let valDialogVisible = ref(false)