Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/develop' into develop

yan2774076977@qq.com 7 mēneši atpakaļ
vecāks
revīzija
e6ecd1a786

+ 4 - 0
src/api/modules/demo/trackSequence.ts

@@ -110,3 +110,7 @@ export const showCATModelApi = (id: string | number) => {
 export const previewPredictResultTrackSequenceModelApi = (id: string | number) => {
   return http.get('/demo/trackSequence/previewPredictResult/' + id, {}, { loading: false })
 }
+
+export const previewEvaluateTrackSequenceApi = (id: string | number) => {
+  return http.get('/demo/trackSequence/previewEvaluateResult/' + id, {}, { loading: false })
+}

+ 4 - 0
src/api/modules/demo/videoStable.ts

@@ -94,3 +94,7 @@ export const getCompareImageCountApi = (taskId: String | Number) => {
 export const getImagesApi = (ossid: String | Number) => {
   return http.get('/demo/videoStable/images/' + ossid)
 }
+
+export const getLogVideoStableApi = (id: string | number) => {
+  return http.get('/demo/videoStable/log/' + id, {}, { loading: false })
+}

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

@@ -47,6 +47,16 @@
             <el-button type="primary" link icon="Delete"> 终止</el-button>
           </template>
         </el-popconfirm>
+        <el-button
+          type="primary"
+          link
+          icon="View"
+          v-auth="['demo:DataSeq:query']"
+          v-if="scope.row.status == '2' && scope.row.type == AlgorithmType2['测试']"
+          @click="previewEvaluate(scope.row)"
+        >
+          结果
+        </el-button>
         <el-button
           type="primary"
           link
@@ -141,6 +151,24 @@
         </template>
       </el-scrollbar>
     </el-dialog>
+    <el-dialog v-model="dialogEvaluateVisable" title="评估结果" width="700">
+      <el-card style="width: 100%; margin-bottom: 10px">
+        <div class="evaluate-data">
+          <el-tooltip effect="dark" content="方向上的相似度" placement="top-start">
+            <span>Direction: {{ evaluateData.Direction }}</span> </el-tooltip
+          ><br />
+          <el-tooltip effect="dark" content="长度上的相似度" placement="top-start">
+            <span>Length: {{ evaluateData.Length }}</span> </el-tooltip
+          ><br />
+          <el-tooltip effect="dark" content="位置上的相似度" placement="top-start">
+            <span>Position: {{ evaluateData.Position }}</span> </el-tooltip
+          ><br />
+          <el-tooltip effect="dark" content="形状上的相似度" placement="top-start">
+            <span>Shape: {{ evaluateData.Shape }}</span> </el-tooltip
+          ><br />
+        </div>
+      </el-card>
+    </el-dialog>
   </div>
 </template>
 
@@ -169,7 +197,8 @@ import {
   getLDetailTrackSequenceApi,
   addEvaluateTrackSequenceApi,
   showCATModelApi,
-  previewPredictResultTrackSequenceModelApi
+  previewPredictResultTrackSequenceModelApi,
+  previewEvaluateTrackSequenceApi
 } from '@/api/modules/demo/trackSequence'
 import { enumAlgorithmModelTrackApi } from '@/api/modules/demo/AlgorithmModelTrack'
 import { getAlgorithmModelTrackApi } from '@/api/modules/demo/AlgorithmModelTrack'
@@ -184,6 +213,14 @@ import useWebSocketStore from '@/stores/modules/websocket'
 import { resetHeart } from '@/utils/websocket'
 import PreviewCompareImages from '@/views/demo/components/PreviewCompareImages.vue'
 
+const dialogEvaluateVisable = ref(false)
+const evaluateData = ref({})
+const previewEvaluate = async (row: any) => {
+  const res: any = await previewEvaluateTrackSequenceApi(row.id)
+  evaluateData.value = res.data
+  dialogEvaluateVisable.value = true
+}
+
 const previewImagesRef = ref()
 const preview = async row => {
   previewImagesRef.value?.handleOpen(previewPredictResultTrackSequenceModelApi, row.id)
@@ -811,3 +848,13 @@ onMounted(async () => {
   updateEnumsAlgorithmModelTrack()
 })
 </script>
+
+<style lang="scss" scoped>
+.evaluate-data {
+  span {
+    margin-bottom: 20px;
+    font-size: 20px;
+    line-height: 2;
+  }
+}
+</style>

+ 18 - 1
src/views/demo/video2image/index.vue

@@ -71,7 +71,7 @@
 </template>
 
 <script setup lang="tsx" name="Video2image">
-import { ref, reactive } from 'vue'
+import { ref, reactive, onMounted } from 'vue'
 import { useHandleData } from '@/hooks/useHandleData'
 import { useDownload } from '@/hooks/useDownload'
 import { ElMessageBox, ElMessage } from 'element-plus'
@@ -93,6 +93,23 @@ import {
   downloadVideo2imageApi
 } from '@/api/modules/demo/video2image'
 
+import useWebSocketStore from '@/stores/modules/websocket'
+import { resetHeart } from '@/utils/websocket'
+
+onMounted(() => {
+  const websocketStore = useWebSocketStore()
+  websocketStore.websocket.onmessage = (e: any) => {
+    if (e.data.indexOf('heartbeat') > 0) {
+      resetHeart()
+    }
+    if (e.data.indexOf('ping') > 0) {
+      return
+    }
+    // console.log(e)
+    proTable.value?.getTableList(true)
+  }
+})
+
 const startVideo2image = async (params: any) => {
   const res = await startVideo2imageApi(params.id)
   if (res.code === 200) {

+ 16 - 1
src/views/demo/videoStable/index.vue

@@ -40,6 +40,16 @@
           </template>
         </el-popconfirm>
         <el-button type="primary" link icon="View" @click="compareVideoStable(scope.row)" v-if="scope.row.status == '2'"> 预览 </el-button>
+        <el-button
+          type="primary"
+          link
+          icon="View"
+          v-auth="['demo:toInfrared:query']"
+          @click="viewLogRef.handleOpen(scope.row.id)"
+          v-if="scope.row.status != '0'"
+        >
+          日志
+        </el-button>
         <el-button type="primary" link icon="View" v-auth="['demo:videoStable:query']" @click="openDialog(3, '视频去抖动查看', scope.row)">
           查看
         </el-button>
@@ -50,6 +60,7 @@
       </template>
     </ProTable>
     <FormDialog ref="formDialogRef" />
+    <ViewLog ref="viewLogRef" :get-log-api="getLogVideoStableApi" />
     <ImportExcel ref="dialogRef" />
     <el-dialog v-model="dialogVisible" :title="dialogTitle" width="80%" :before-close="handleClose">
       <el-form :inline="true">
@@ -100,11 +111,15 @@ import {
   stopVideoStableApi,
   // getCompareImageApi,
   // getCompareImageCountApi,
-  getImagesApi
+  getImagesApi,
+  getLogVideoStableApi
 } from '@/api/modules/demo/videoStable'
 
 import useWebSocketStore from '@/stores/modules/websocket'
 import { resetHeart } from '@/utils/websocket'
+import ViewLog from '@/views/demo/components/ViewLog.vue'
+
+const viewLogRef = ref()
 
 onMounted(() => {
   const websocketStore = useWebSocketStore()