Quellcode durchsuchen

Merge branch 'fix/lyz_bug_fix_20260112' of FanYanPeng/EAIFrontend into host-nju

LiaoYanZhou vor 7 Monaten
Ursprung
Commit
434d298802

+ 24 - 8
src/views/BehaviorPage/component/EditCanvas.vue

@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import {onMounted, type Ref, watch} from "vue";
+import {onMounted, ref, type Ref, watch} from "vue";
 import * as echarts from 'echarts';
 import {inject} from "vue-demi";
 import useApis from "@/apis";
@@ -15,10 +15,19 @@ const currentEngagement = inject('currentEngagement') as Ref<any>;
 let productData = [];
 let cursorData = [];
 let processData = [];
+let noData = ref(false)
+
 watch(currentEngagement,()=>{
-  let chartDom = document.getElementById('edit-canvas');
-  let myChart = echarts.getInstanceByDom(chartDom);
-  getCanvasData(myChart);
+  noData.value = false
+  setTimeout(()=>{
+    let chartDom = document.getElementById('edit-canvas');
+    if (!chartDom)return;
+    let myChart = echarts.getInstanceByDom(chartDom);
+    if (!myChart){
+      myChart = echarts.init(chartDom);
+    }
+    getCanvasData(myChart);
+  },0)
 });
 const loadingStatus = inject('loadingStatus') as Ref<{
   edit:boolean,
@@ -54,10 +63,14 @@ function getCanvasData(chart:EChartsType){
       let processCount = 0;
       let zeroCount =0;
       if (!rowData){
-        ElMessage.error('获取修改过程数据失败')
-        loadingStatus.value.edit = false;
         chart.hideLoading();
-        return;
+        loadingStatus.value.edit = false;
+        noData.value = true
+        return
+      }
+      else{
+        noData.value = false
+        loadingStatus.value.edit = false;
       }
       rowData.forEach((item:any) => {
         // console.log("item",item)
@@ -374,9 +387,12 @@ onMounted(()=>{
 </script>
 
 <template>
-  <div id="edit-canvas" class="canvas-container">
+  <div id="edit-canvas" class="canvas-container" v-if="!noData">
 
   </div>
+  <div class="canvas-container" v-else>
+    <el-empty description="暂无数据"/>
+  </div>
 </template>
 
 <style scoped>

+ 25 - 5
src/views/BehaviorPage/component/PauseCanvas.vue

@@ -13,6 +13,10 @@ const props = defineProps<{
 const apis = useApis();
 const pauseData:any[] = [];
 let chartData:any[] = [];
+
+let noData = ref(false)
+
+
 const limit = {
   max:0,
   min:0
@@ -28,9 +32,17 @@ function formatTimeWithMilliseconds(stamp:number ){
 
 const currentEngagement = inject('currentEngagement') as Ref<any>;
 watch(currentEngagement,()=>{
-  let chartDom = document.getElementById('pause-canvas');
-  let myChart = echarts.getInstanceByDom(chartDom);
-  getCanvasData(myChart);
+  noData.value = false
+  setTimeout(()=>{
+    let chartDom = document.getElementById('pause-canvas');
+    if (!chartDom)return;
+    let myChart = echarts.getInstanceByDom(chartDom);
+    if (!myChart){
+      myChart = echarts.init(chartDom);
+    }
+    getCanvasData(myChart);
+  },0)
+
 });
 
 const maxPauseTime = inject('maxPauseTime') as Ref<number>;
@@ -57,11 +69,16 @@ function getCanvasData(chart:EChartsType){
           pauseData.length = 0;
           chartData.length = 0;
           if (!rowData){
-            ElMessage.error('获取停顿数据失败')
+            // ElMessage.error('获取停顿数据失败')
             loadingStatus.value.pause = false;
             chart.hideLoading();
+            noData.value = true
             return;
           }
+          else{
+            loadingStatus.value.pause = false;
+            noData.value = false
+          }
           if (rowData.length>0){
             limit.max = rowData[0].pauseTime;
           }
@@ -169,9 +186,12 @@ onMounted(()=>{
 </script>
 
 <template>
-  <div id="pause-canvas" class="canvas-container">
+  <div id="pause-canvas" class="canvas-container" v-if="!noData">
 
   </div>
+  <div class="canvas-container" v-else>
+    <el-empty description="暂无数据"/>
+  </div>
 </template>
 
 <style scoped>

+ 22 - 6
src/views/BehaviorPage/component/ProcessCanvas.vue

@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import {onMounted, type Ref, watch} from "vue";
+import {onMounted, ref, type Ref, watch} from "vue";
 import * as echarts from 'echarts';
 import {inject} from "vue-demi";
 import type {EChartsType} from "echarts";
@@ -14,9 +14,17 @@ let productData = [];
 let cursorData = [];
 let processData = [];
 watch(currentEngagement,()=>{
-  let chartDom = document.getElementById('process-canvas');
-  let myChart = echarts.getInstanceByDom(chartDom);
-  getCanvasData(myChart);
+  noData.value = false
+  setTimeout(()=>{
+    let chartDom = document.getElementById('process-canvas');
+    if (!chartDom)return;
+    let myChart = echarts.getInstanceByDom(chartDom);
+    if (!myChart){
+      myChart = echarts.init(chartDom);
+    }
+    getCanvasData(myChart);
+  },0)
+
 });
 const loadingStatus = inject('loadingStatus') as Ref<{
   edit:boolean,
@@ -66,8 +74,13 @@ function getCanvasData(chart:EChartsType){
           if (!rowData){
             chart.hideLoading();
             loadingStatus.value.process = false;
+            noData.value = true
             return
           }
+          else{
+            loadingStatus.value.process = false;
+            noData.value = false
+          }
           rowData.forEach((item:any) => {
             // console.log("item",item)
             let startStamp = 0;
@@ -225,7 +238,7 @@ function getCanvasData(chart:EChartsType){
   //测试用数据
 
 }
-
+let noData = ref(false)
 
 
 
@@ -240,9 +253,12 @@ onMounted(()=>{
 </script>
 
 <template>
-  <div id="process-canvas" class="canvas-container">
+  <div id="process-canvas" class="canvas-container" v-if="!noData">
 
   </div>
+  <div class="canvas-container" v-else>
+    <el-empty description="暂无数据"/>
+  </div>
 </template>
 
 <style scoped>

+ 28 - 7
src/views/BehaviorPage/component/TotalCanvas.vue

@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import {onMounted, type Ref, watch} from "vue";
+import {onMounted, type Ref, watch,ref} from "vue";
 import * as echarts from 'echarts';
 import {inject} from "vue-demi";
 
@@ -18,14 +18,20 @@ const loadingStatus = inject('loadingStatus') as Ref<{
   process:boolean,
   total:boolean
 }>;
-
+let noData = ref(false)
 watch(currentEngagement,()=>{
   if (currentEngagement.value === null){
     return;
   }
-  let chartDom = document.getElementById('total-canvas');
-  let myChart = echarts.getInstanceByDom(chartDom);
-  drawChart(myChart);
+  noData.value = false
+  setTimeout(()=>{
+    let chartDom = document.getElementById('total-canvas');
+    let myChart = echarts.getInstanceByDom(chartDom);
+    if (!myChart){
+      myChart = echarts.init(chartDom);
+    }
+    drawChart(myChart);
+  },0)
 },{deep:true})
 
 let data = []
@@ -42,6 +48,13 @@ function drawChart(chart: EChartsType){
   .then((res:any) => {
     // console.log(res);
     if (res&&res.data&&res.data.code === 200){
+      noData.value = false
+      if (res.data.data.insertCount == 0 && res.data.data.longPauseCount == 0 && res.data.data.deleteCount == 0){
+        noData.value = true;
+        chart.hideLoading();
+        loadingStatus.value.total = false;
+        return
+      }
       data = [
         { value: res.data.data.insertCount, name: '产出行为' },
         { value: res.data.data.longPauseCount, name: '停顿行为' },
@@ -89,6 +102,11 @@ function drawChart(chart: EChartsType){
       chart.hideLoading();
       loadingStatus.value.total = false;
     }
+    else{
+      noData.value = true;
+      chart.hideLoading();
+      loadingStatus.value.total = false;
+    }
   })
 }
 onMounted(()=>{
@@ -102,9 +120,12 @@ onMounted(()=>{
 </script>
 
 <template>
-<div id="total-canvas" class="canvas-container">
+  <div id="total-canvas" class="canvas-container" v-if="!noData">
 
-</div>
+  </div>
+  <div class="canvas-container" v-else>
+    <el-empty description="暂无数据"/>
+  </div>
 </template>
 
 <style scoped>

+ 1 - 1
src/views/CourseSquare/component/CourseDetails/component/CourseHomeworkTable.vue

@@ -287,7 +287,7 @@ const openEditor = (url: string, title: string) => {
   }
 
   const handleWriting = (assignmentId:number) => {
-    router.push(`/home/homeworkDetail/${assignmentId}`);
+    router.push(`/home/homeworkDetail/${assignmentId}?fromCourse=1`);
     // Location.reload()
   }
 

+ 14 - 7
src/views/HomeworkPage/component/HomeworkDetail.vue

@@ -228,13 +228,20 @@ const fetchData = () => {
 
 const handleBack = () => {
    // 跳转到我的作业页面,携带课程ID参数以便自动选中对应课程
-   router.push({
-     path: '/home/myHomework',
-     query: {
-       courseId: data.courseId,
-       fromAssignment: 'true'
-     }
-   }).then(() => {window.location.reload()})
+  const { fromCourse} = route.query
+  if (!fromCourse){
+    router.push({
+      name: 'myHomework',
+      query: {
+        courseId: data.courseId,
+        fromAssignment: 'true'
+      }
+    }).then(() => {window.location.reload()})
+  }
+  else{
+    router.back()
+  }
+
 }
 
 onMounted(() => {