Эх сурвалжийг харах

个人画像-增加历次考试对比、总分时隐藏个人画像

吴朋磊 2 сар өмнө
parent
commit
809dea5a14

+ 0 - 1
src/components/FiltersItem_ruoyan.vue

@@ -25,7 +25,6 @@
       }
     },
     mounted() {
-      console.log('filtersData:', this.filtersData);
     },
     methods:{
 

+ 2 - 1
src/http/api.js

@@ -1,8 +1,9 @@
 import user from './api/user'//个人中心 相关接口
 import reportStudent from "./api/reportStudent";
 import personalProfile from "./api/personalProfile";
+
 export default {
     user,  
     reportStudent,
-    personalProfile
+    personalProfile,
 }

+ 0 - 5
src/router/index.js

@@ -122,19 +122,16 @@ function addAnalyticsScript() {
 
     // 移除已存在的统计脚本
     let existingScript = document.getElementById('_bxtj');
-    // console.log('移除已存在的统计脚本...',existingScript);
     while (existingScript) {
         existingScript.remove();
         existingScript = document.getElementById('_bxtj');
     }
     // 移除已存在的统计脚本
     let existingScriptFrame = document.getElementById('_bxtjiframe');
-    // console.log('移除已存在的统计脚本...',existingScriptFrame);
     while (existingScriptFrame) {
         existingScriptFrame.remove();
         existingScriptFrame = document.getElementById('_bxtjiframe');
     }
-    console.log('添加统计分析脚本...');
     // 等待DOM加载完成
     setTimeout(() => {
         var _s = document.createElement('script');
@@ -147,7 +144,6 @@ function addAnalyticsScript() {
         const currentUser = userInfo.loginName || ''; // 当前用户名
         const subSiteName = userInfo.schoolName || '';
         const mySiteId = localStorage.getItem("user_schoolWebSiteId") || ''; // 你的站点ID
-        console.log("当前学校站点id", userInfo, mySiteId);
         if (mySiteId != '') {
             // 构建URL(按照原始代码格式)
             let src = `https://bjedures.bjedu.cn/bjjw_logdb/bxlog.js?user=${currentUser}&id=${mySiteId}`;
@@ -157,7 +153,6 @@ function addAnalyticsScript() {
             _s.setAttribute('src', src);
             var body = document.getElementsByTagName('body');
             body[0].appendChild(_s);
-            console.log('统计分析脚本已添加到body中。');
         }
     }, 1000);//1秒后添加
 }

+ 408 - 0
src/views/analysisReport/components/benchTaskSelectSchool.vue

@@ -0,0 +1,408 @@
+<template>
+
+<el-dialog :title="title" :visible.sync="localShowDialog" width="60%">
+    <div class="dialog_center padding_20 page_search">
+        <div class="search_content">
+            <div class="content_left"> 
+                <el-select  v-model="enrollmentYear" @change="ChangeFilter" placeholder="入学年份" class="select_width">
+                    <el-option label="全部学届" value=""></el-option>
+                    <el-option
+                        v-for="item in graduatesList"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value">
+                    </el-option>
+                </el-select>
+                <el-select  v-model="levelCode"  @change="ChangeFilter" placeholder="选择学段" class="select_width">
+                    <el-option label="全部学段" value=""></el-option>
+                    <el-option
+                        v-for="item in levelsList"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value">
+                    </el-option>
+                </el-select>
+                <el-select  v-model="gradeCode"  @change="ChangeFilter" placeholder="选择年级" class="select_width" >
+                    <el-option label="全部年级" value=""></el-option>
+                    <el-option
+                        v-for="item in gradeList"
+                        :key="item.gradeCode"
+                        :label="item.gradeName"
+                        :value="item.gradeCode">
+                    </el-option>
+                </el-select>
+                <el-input class="input_width" v-model="keyWord" @input="ChangeFilter"   placeholder="考试编号、考试名称"> 
+                    <el-button @click="ChangeFilter" slot="append" icon="el-icon-search"></el-button>
+                </el-input>
+            </div>
+        </div>
+        <div class="page_jg"></div>
+        <FiltersItem :filtersData="filtersData" @selectItem="ChangeFilters" />
+        <div class="page_jg"></div>
+        <div class="page_table table_row_42">
+            <el-table ref="multipleTable" :key="benchTaskSelectKey" :data="tableData" border stripe row-key="id"  @row-click="HandleClickChange" @selection-change="HandleSelectionChange" @select="HandleSelection">
+                <el-table-column  width="55" align="center" v-if="!isMultiple">
+                    <template slot-scope="scope">
+                        <div class="table_row_checked" >
+                            <div class="icon_checked" v-if="radioId == scope.row.id">
+                                <div class="checked_bg"></div>
+                            </div>
+                            <div v-else class="icon_item"></div>
+                        </div>
+                    </template>
+                </el-table-column>
+                <el-table-column type="selection" reserve-selection align="center"  width="55" v-if="isMultiple">
+
+                </el-table-column>
+                <el-table-column align="center" prop="examDate" width="120" label="考试日期" >
+                    
+                </el-table-column>
+                <el-table-column align="center" prop="examName"  label="考试名称" show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column align="center" prop="gradeName" width="100" label="年级" >
+                </el-table-column>
+                <el-table-column align="center" prop="examType" width="100" label="考试类型">
+                </el-table-column>
+                <el-table-column align="center" prop="courseNames" min-width="100" label="科目" show-overflow-tooltip>
+                </el-table-column>
+            </el-table>
+        </div>
+        <div class="page_pagination" v-if="pageInfo.total>10">
+            <el-pagination
+                @current-change="ChangePage"
+                background
+                layout="prev,pager,next"
+                :page-size="pageInfo.pageSize"
+                :current-page="pageInfo.pageNum"
+                :total="pageInfo.total">
+            </el-pagination>
+        </div>
+    </div>
+    <div slot="footer" class="dialog-footer">
+        <el-button @click="localShowDialog = false">取 消</el-button>
+        <el-button type="primary" @click="EnterSubmit()">确 定</el-button>
+    </div>
+</el-dialog>
+
+</template>
+<script>
+import FiltersItem from "@/components/FiltersItem_ruoyan.vue";
+  export default {
+    components: { FiltersItem },
+    props: {
+      showDialog: {
+        type: Boolean,
+        default: false,
+      },//是否显示弹窗
+
+      title:{
+        type: String,
+        default: '对标任务选择',
+      },//标题
+
+      isMultiple:{
+        type: Boolean,
+        default: true,
+      },//是否多选
+      benchTaskSelectKey: {
+        type: Number,
+        default: 0,
+      },
+      before: {
+        type: Number,
+        default: undefined,
+      },// 是否添加before参数
+    },
+    watch: {
+        showDialog(newVal) {
+            this.localShowDialog = newVal; // 监听外部传入的 showDialog 变化
+            if(newVal) {
+                this.enrollmentYear = this.reportExamItem.graduates.toString();//届
+                this.levelCode = this.reportExamItem.levelCode.toString();//学段
+                this.gradeCode = this.reportExamItem.gradeCode;//年级
+                this.selectList = this.$store.state.report.lastExamSelectIds;
+                this.GetLocalFilterData();//从本地读取筛选数据
+                this.GetPreviousExamPageList()//获取数据
+            }
+            
+        },
+        localShowDialog(newVal) {
+            this.$emit('update:showDialog', newVal); // 通知父组件显示状态变化
+        },
+    },
+    data() {
+      return {
+        localShowDialog: this.showDialog, // 使用本地数据来控制显示
+        enrollmentYear:'',//学届
+        levelCode:'',//学段
+        gradeCode:'',//年级
+        keyWord:'',//搜索关键字
+        examType:'',//考试类型
+        examTypeList:[],//考试类型list
+        graduatesList:[],//选择学届list
+        levelsList:[],//选择学段list
+        gradeList:[],//选择年级原数组list
+        gradeAllList:[],//选择年级所有list
+        filtersData:[
+            {
+                name: '考试类型',
+                value: '',
+                list: [
+                    {
+                        label: '全部',
+                        value: "",
+                    },
+
+                ],
+            },
+        ],//筛选数据
+        tableData:[],//表格数据
+
+        pageInfo: {
+          pageSize: 10,
+          pageNum: 1,
+          total: 0,
+        },//分页数据
+
+        radioId:'',//单选的考生id
+        radioName:'',//单选的考生name
+        selectList:[],//多选的考试
+
+
+      };
+    },
+    computed:{
+        reportExamItem() {
+            // let item = JSON.parse(localStorage.getItem('reportExamItem'));
+            return this.$store.state.report.examSelectItem;
+        },//分析报告公共参数变量
+    },
+    
+    created() {
+        // this.enrollmentYear = this.reportExamItem.graduates.toString();//届
+        // this.levelCode = this.reportExamItem.levelCode.toString();//学段
+        // this.gradeCode = this.reportExamItem.gradeCode;//年级
+        this.selectList = this.$store.state.report.lastExamSelectIds;
+        console.log(this.selectList)
+        this.GetLocalFilterData();//从本地读取筛选数据
+        this.GetPreviousExamPageList()
+    },
+    methods: {
+
+        //从本地读取数据
+        GetLocalFilterData() {
+            this.examType = ''
+            if(this.$store.state.report.filterDataObject != null) {
+                let filterDataObject = this.$store.state.report.filterDataObject;
+                //届别
+                this.graduatesList = filterDataObject.graduatesList;
+                console.log(this.graduatesList)
+                this.filtersData=[
+                    {
+                        name: '考试类型',
+                        value: '',
+                        list: [
+                            {
+                                label: '全部',
+                                value: '',
+                            }
+                        ],
+                    }
+                ];//筛选数据
+                
+                //学段
+                this.levelsList =  filterDataObject.levelsList;
+                console.log("打印学段列表",this.levelsList);
+                //年级list
+                this.gradeAllList = filterDataObject.gradeList;
+                console.log("this.gradeAllList",this.gradeAllList,this.levelCode);
+                this.gradeList = this.gradeAllList.filter(grade => grade.levelCode == this.levelCode);
+                //examTypeList考试类型
+                this.examTypeList = filterDataObject.examTypeList;
+                this.examTypeList.forEach(item => {
+                    let obj = {
+                        label: item.examName,
+                        value: item.examType,
+                    };
+                    this.filtersData[0].list.push(obj);
+                })
+            }
+        },
+
+        //获取筛选的数据
+        ChangeFilters(e) {
+            // console.log('筛选切换事件', e);
+            this.filtersData[e.index].value = e.value;
+            this.examType = e.value;
+            this.ChangeFilter();
+        },
+        //多选选择行
+        HandleSelectionChange(val) {
+            // console.log("打印选择行",val);
+            // if(this.isMultiple) {
+            //     this.selectList = val;
+            // }
+            // console.log("打印选择的selectList", this.selectList);
+        },
+        HandleSelection(e, row){
+            if(this.isMultiple) {
+                const index = this.selectList.indexOf(row.id);
+                if(index == -1){
+                    this.selectList.push(row.id)
+                }else{
+                    this.selectList.splice(index,1)
+                }
+                // this.$refs.multipleTable.toggleRowSelection(e);
+            }
+        },
+        //行选择事件
+        HandleClickChange(e) {
+            if(this.isMultiple) {
+                const index = this.selectList.indexOf(e.id);
+                if(index == -1){
+                    this.selectList.push(e.id)
+                }else{
+                    this.selectList.splice(index,1)
+                }
+                this.$refs.multipleTable.toggleRowSelection(e);
+            }else{
+                this.radioId = e.id;
+                this.radioName = e.examName;
+            }
+        },
+        //筛选
+        ChangeFilter() {
+            this.pageInfo.pageNum=1;
+            this.GetPreviousExamPageList();//分页获取历次考试列表
+        },
+        //分页
+        ChangePage(num) {
+            this.pageInfo.pageNum = num;
+            this.GetPreviousExamPageList();//分页获取历次考试列表
+        },
+
+        //分页获取历次考试列表
+        GetPreviousExamPageList() {
+            return
+            let params = {
+                examId: this.$store.state.report.examId, // 考试id
+                examLevel:this.$store.state.report.examLevel,
+                graduates: this.enrollmentYear, // 学届
+                levelCode: this.levelCode, // 学段
+                gradeCode: this.gradeCode, // 年级
+                word: this.keyWord, // 模糊查询
+                examType: this.examType, // 考试类型
+                courseCode: this.$store.state.report.filterObject.subjectCode, // 考试科目
+                examDate: '', // 考试日期
+                pageNum: this.pageInfo.pageNum,//页码
+                pageSize: this.pageInfo.pageSize,//每页内容
+            };
+            
+            // 根据before属性动态添加或删除before参数
+            if (this.before !== undefined) {
+                params.before = this.before;
+            }
+            //获取历次考试列表
+            this.$api.reportSchool.selectPreviousAnalysisExamPageList(params).then(res => {
+                if(res.code==200 && res.data) {
+                    this.tableData = res.data.records || [];
+                    this.pageInfo.total = parseInt(res.data.total) || 0;//总条数
+                } else {
+                    this.tableData = [];
+                    this.pageInfo.total = 0
+                }
+
+                this.checkSelect()
+            })
+        },
+        checkSelect() {
+            this.$nextTick(() => {
+                if(this.isMultiple) {
+                    let selectId = this.$store.state.report.lastExamSelectIds;
+                    this.tableData.forEach(row => {
+                        if (selectId.includes(row.id)) {
+                            this.$refs.multipleTable && this.$refs.multipleTable.toggleRowSelection(row, true);
+                        }
+                    });
+                }else{
+                    this.radioId = this.$store.state.report.lastExamRadioId
+                    this.radioName = this.$store.state.report.lastExamRadioName
+                }
+            });
+        },
+
+        //确定选择事件
+        EnterSubmit() {
+            console.log("确定选择事件",this.radioId);
+            console.log("确定选择事件",this.selectList);
+            let idList=[];
+            console.log(this.isMultiple);
+            if(this.isMultiple) {
+                
+                //多选  
+                // this.selectList.forEach(item=>{
+                //     idList.push(item.id);
+                // });
+                if(this.selectList.length > 19) {
+                    this.$message.warning('历次考试对比最多支持20场!');
+                    return
+                }
+                this.$store.commit("report/SetLastExamSelectIds", this.selectList)
+            } else {
+                //单选
+                idList.push(this.radioId);
+                this.$store.commit("report/SetLastExamRadioId", this.radioId)
+                this.$store.commit("report/SetLastExamRadioName", this.radioName ?? '')
+            }
+            this.$emit("GetSelectId");
+            this.localShowDialog = false;
+        },
+
+       
+    },
+  };
+  </script>
+  
+  <style lang="scss" scoped>
+  :deep(.el-table__header) .el-checkbox {
+    display: none;
+  }
+  .table_row_checked
+  {
+    width: 100%;
+    height: 100%;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    .icon_checked
+    {
+        width: 20px;
+        height: 20px;
+        border-radius: 50%;
+        background-color: #fff;
+        border:1px solid #2E64FA;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+
+        .checked_bg
+        {
+            width: 12px;
+            height: 12px;
+            border-radius: 50%;
+            background-color: #2E64FA;
+
+        }
+    }
+
+    .icon_item
+    {
+        width: 20px;
+        height: 20px;
+        background: #FFFFFF;
+        border-radius: 50%;
+        border: 1px solid #00000020;
+    }
+  }
+  </style>
+  

+ 1 - 1
src/views/analysisReport/personalProfile/KnowledgeTrack.vue

@@ -69,7 +69,7 @@ export default {
 
   .title {
     font-size: 16px;
-    font-weight: 500;
+    font-weight: 600;
     color: #333333;
     margin: 0 0 15px 0;
   }

+ 75 - 18
src/views/analysisReport/personalProfile/MyGradeHistory.vue

@@ -1,6 +1,13 @@
 <template>
   <div class="myGradeHistory">
-    <h3 class="title">我的历次成绩</h3>
+    <div class="chart_title">
+      <h3 class="title">我的历次成绩</h3>
+      <!-- <el-button type="primary" size="small" class="compare_btn" @click="showExamCompareDialog">
+        <img src="../../../assets/studentAnalysis/echarts.svg" alt="图表" class="btn_icon">
+        历次考试对比
+      </el-button> -->
+    </div>
+
     <div class="content" v-if="gradeHistoryData.length > 0">
       <el-table :data="tableData" style="width: 100%" border :header-cell-style="headerCellStyle"
         :cell-style="cellStyle" stripe>
@@ -18,7 +25,7 @@
         </el-table-column>
         <el-table-column label="操作" width="120" align="center">
           <template slot-scope="scope">
-            <el-button  type="text" @click="viewDetails(scope.row)">查看答题卡</el-button>
+            <el-button type="text" @click="viewDetails(scope.row)">查看答题卡</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -32,23 +39,26 @@
       </div>
     </div>
 
-      <!-- 学生答题卡预览组件 -->
-    <StudentPaper
-      v-model="showStudentPaperDialog"
-      :paperInfo="paperInfo"
-      :currentPageIndex="currentPageIndex"
-      :pageTitle="paperTitle"
-    ></StudentPaper>
-  </div>
+    <!-- 学生答题卡预览组件 -->
+    <StudentPaper v-model="showStudentPaperDialog" :paperInfo="paperInfo" :currentPageIndex="currentPageIndex"
+      :pageTitle="paperTitle"></StudentPaper>
 
+        <!-- 历次考试对比弹窗 - 使用公共组件 -->
+    <BenchTaskSelect v-if="showBenchTaskSelect" :showDialog.sync="showBenchTaskSelect" :isMultiple="isMultiple"
+      :title="benchTaskTitle" :before="1" @GetSelectId="GetSelectId"></BenchTaskSelect>
+  </div>
 </template>
 
 <script>
 import StudentPaper from '@/components/StudentPaper.vue' //学生答题卡预览组件
 import { mapGetters } from 'vuex'
+// 导入公共组件
+import BenchTaskSelect from '@/views/analysisReport/components/benchTaskSelectSchool';
+
 export default {
   components: {
-    StudentPaper
+    StudentPaper,
+    BenchTaskSelect
   },
   name: "MyGradeHistory",
   props: {
@@ -67,7 +77,13 @@ export default {
       showStudentPaperDialog: false, //显示答题卡弹框
       paperInfo: {},
       paperTitle: '', //答题卡弹框标题
-      currentPageIndex: 0 //当前选中的答题卡第几页
+      currentPageIndex: 0 ,//当前选中的答题卡第几页
+      // 控制弹窗显示/隐藏
+      showBenchTaskSelect: false,
+      // 是否允许多选
+      isMultiple: true,
+      // 弹窗标题
+      benchTaskTitle: '历次考试对比',
     };
   },
   computed: {
@@ -123,6 +139,19 @@ export default {
     }
   },
   methods: {
+    // 历史考试对比弹窗
+    showExamCompareDialog() {
+      this.showBenchTaskSelect = true;
+    },
+    // 获取选中的ID
+    GetSelectId() {
+      // 获取选中的考试ID
+      const selectedExamIds = this.$store.state.report.lastExamSelectIds || [];
+      // 通过事件将选中的考试ID传递给父组件
+      this.$emit('select-exam-ids', selectedExamIds);
+      // 关闭弹窗
+      this.showBenchTaskSelect = false;
+    },
     viewDetails(row) {
       this.paperTitle = `${row.examName}_${this.userInfo.userName}`
       this.paperInfo = { examId: this.reportParam.examId, subjectCode: this.reportParam.subjectCode }
@@ -140,13 +169,40 @@ export default {
   padding: 20px;
   box-sizing: border-box;
 
-  .title {
-    font-size: 16px;
-    font-weight: 500;
-    color: #333333;
-    margin: 0 0 10px 0;
+  .chart_title {
+    .title {
+      font-size: 16px;
+      font-weight: 600;
+      color: #333333;
+      margin: 0 0 20px 0;
+    }
+
+    // 历史考试对比
+    .compare_btn {
+      font-size: 14px;
+      padding: 8px 10px;
+      background: #FFFFFF;
+      border-radius: 4px;
+      border: 1px solid #DCDFE6;
+      color: #333333;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+
+      .btn_icon {
+        width: 16px;
+        height: 16px;
+        margin-right: 4px;
+        vertical-align: middle;
+      }
+
+      span {
+        vertical-align: middle;
+      }
+    }
   }
 
+
   /* 表格区域 */
   .content {
 
@@ -247,7 +303,8 @@ export default {
       align-items: center;
       justify-content: center;
       border-radius: 8px;
-      span{
+
+      span {
         margin-top: 11%;
       }
     }

+ 0 - 1
src/views/analysisReport/personalProfile/index.vue

@@ -178,7 +178,6 @@ export default {
     methods: {
         // 我的历次成绩---年级画像
         MyGradeHistoryData() {
-            console.log(this.portraitData);
             // 加载状态-清空数据
             this.historyloading = true;
             // 历次考试知识点追踪-加载状态

+ 6 - 6
src/views/analysisReport/personalProfile/knowledgePaps.vue

@@ -19,14 +19,14 @@
                     <div class="question_meta">
                         <span class="question_num">{{ index + 1 }}</span>
                         <span class="question_type">题型类型:
-                            <i class="typeColor" style="color:#333333">{{ item.questionType }}</i>
+                            <i class="typeColor" style="color:#333333;font-weight: bold;">{{ item.questionType }}</i>
                         </span>
                         <span class="question_difficulty">难度:
-                            <i class="typeColor" style="color:#fac858">{{ item.questionLevel }}</i>
+                            <i class="typeColor" style="color:#fac858;font-weight: bold;">{{ item.questionLevel }}</i>
                         </span>
                     </div>
                     <div class="question_source">来源:
-                        <i class="typeColor" style="color:#333333">{{ item.fromPaper }}</i>
+                        <i class="typeColor" style="color:#999999;">{{ item.fromPaper }}</i>
                     </div>
                 </div>
                 <!-- 推题内容 -->
@@ -103,7 +103,7 @@ export default {
     // 标题部分
     .chart_title {
         font-size: 16px;
-        margin-bottom: 10px;
+        margin-bottom: 20px;
         display: flex;
         justify-content: space-between;
         align-items: center;
@@ -212,8 +212,8 @@ export default {
             padding: 20px 0;
             border-bottom: 1px solid #EBEEF5;
             p {
-                font-size: 14px;
-                color: #666666;
+                font-size: 16px;
+                color: #333333;
                 margin-bottom: 10px;
                 line-height: 2; 
             }

+ 74 - 10
src/views/analysisReport/studentPage/mainPage.vue

@@ -10,11 +10,11 @@
             </div>
             <div class="header_right">
                 <div class="select_list" v-if="isShowFilter">
-                    <el-select style="width: 120px" v-model="item.value" :placeholder="'请选择' + item.name"
-                        class="select_item" @change="ChangeFilters({ index: index, value: item.value })"
-                        v-for="(item, index) in filterData" :key="index" v-show="item.list.length > 1">
-                        <el-option v-for="item in item.list" :key="item.value" :label="item.label"
-                            :value="item.value"></el-option>
+                    <el-select style="width: 120px" v-model="filterData[index].value" :placeholder="'请选择' + item.name"
+                        class="select_item" @change="ChangeFilters({ index: index, value: $event })"
+                        v-for="(item, index) in filteredFilterData" :key="index" v-show="item.list.length > 1">
+                        <el-option v-for="option in item.list" :key="option.value" :label="option.label"
+                            :value="option.value"></el-option>
                     </el-select>
                 </div>
                 <template v-if="isShowBtn">
@@ -36,14 +36,14 @@
 
                                 <button v-if="isShowKnowledgeButtons" class="mm_btn mb_10" :class="{ active: activeBtn === pathTwo }"
                                     @click="toPage(pathTwo)">个性化错题</button>
-                                <button v-if="isShowKnowledgeButtons" class="mm_btn mb_10" :class="{ active: activeBtn === pathThree }"
+                                <button v-if="isShowKnowledgeButtons && !isTotalScore" class="mm_btn mb_10" :class="{ active: activeBtn === pathThree }"
                                     @click="toPage(pathThree)">个人画像</button>
                             </div>
 
                             <div class="right">
                                 <div class="page_filter" ref="filterContent">
-                                    <FiltersItem :filtersData="filterData" @selectItem="ChangeFilters"></FiltersItem>
-                                </div>
+                                <FiltersItem :filtersData="filteredFilterData" @selectItem="ChangeFilters"></FiltersItem>
+                            </div>
                                 <router-view ref="child" @isPdfDataLoadEnd="isPdfDataLoadEnd" @closePdfLoading="closePdfLoading"></router-view>
                             </div>
                         </div>
@@ -51,7 +51,7 @@
 
                     <template v-else>
                         <div class="page_filter" ref="filterContent">
-                            <FiltersItem :filtersData="filterData" @selectItem="ChangeFilters"></FiltersItem>
+                            <FiltersItem :filtersData="filteredFilterData" @selectItem="ChangeFilters"></FiltersItem>
                         </div>
                         <router-view ref="child" @isPdfDataLoadEnd="isPdfDataLoadEnd" @closePdfLoading="closePdfLoading"></router-view>
                     </template>
@@ -79,6 +79,33 @@ export default {
         isShowKnowledgeButtons() {
             // 从环境变量中获取基础URL,判断是否显示按钮
             return process.env.VUE_APP_BASE !== 'https://www.k12100.com';
+        },
+        // 判断是否为总分科目,用于控制个人画像按钮显示
+        isTotalScore() {
+            return this.$store.state.report.isTotalScore;
+        },
+        // 动态过滤筛选数据,在个人画像页面隐藏总分选项
+        filteredFilterData() {
+            // 检查当前是否在个人画像页面
+            const isPersonalProfilePage = this.$route.path === '/studentAnalysisReport/reportDetails/personalProfile';
+            
+            if (!isPersonalProfilePage) {
+                // 非个人画像页面,返回原始数据
+                return this.filterData;
+            }
+            
+            // 深拷贝原始数据,避免直接修改
+            const updatedFilterData = JSON.parse(JSON.stringify(this.filterData));
+            
+            // 遍历筛选数据,找到科目名称筛选项
+            updatedFilterData.forEach(filterItem => {
+                if (filterItem.type === 'subjectName') {
+                    // 过滤掉总分选项(isTotal为1或subjectGroupType为1的选项)
+                    filterItem.list = filterItem.list.filter(item => item.isTotal !== 1 && item.subjectGroupType !== 1);
+                }
+            });
+            
+            return updatedFilterData;
         }
     },
     data() {
@@ -151,6 +178,7 @@ export default {
 
         // 筛选事件
         ChangeFilters(e) {
+            
             this.filterData[e.index].value = e.value;
             // 选中科目数据
             let courseObj = this.filterData[0].list.find(item => item.value == this.filterData[0].value);
@@ -171,7 +199,6 @@ export default {
 
             localStorage.setItem('reportExamCourseId', courseObj.subjectId);//单科的考试科目id
             localStorage.setItem('reportIsTotalScore', courseObj.isTotal == 1 || courseObj.subjectGroupType == 1)
-            console.log("打印筛选数据", filterObject);
             this.$store.dispatch("report/UpdateFilterObject", filterObject);
         },
 
@@ -239,10 +266,39 @@ export default {
         closePdfLoading(){
             this.stuPdfLoading = false;
         },
+        
+        // 处理筛选数据更新,在个人画像页面隐藏总分选项
+        handleFilterDataUpdate() {
+            // 检查当前是否在个人画像页面
+            const isPersonalProfilePage = this.$route.path === '/studentAnalysisReport/reportDetails/personalProfile';
+            
+            if (isPersonalProfilePage) {
+                // 深拷贝原始数据,避免直接修改props
+                const updatedFilterData = JSON.parse(JSON.stringify(this.filterData));
+                
+                // 遍历筛选数据,找到科目名称筛选项
+                updatedFilterData.forEach((filterItem, index) => {
+                    if (filterItem.type === 'subjectName') {
+                        // 过滤掉总分选项(isTotal为1的选项)
+                        const nonTotalItems = filterItem.list.filter(item => item.isTotal !== 1 && item.subjectGroupType !== 1);
+                        
+                        // 检查当前选中的是否是总分选项
+                        const currentSelected = filterItem.list.find(item => item.value === filterItem.value);
+                        const isCurrentTotal = currentSelected && (currentSelected.isTotal === 1 || currentSelected.subjectGroupType === 1);
+                        
+                        // 如果当前选中的是总分选项且有其他选项,切换到第一个非总分选项
+                        if (isCurrentTotal && nonTotalItems.length > 0) {
+                            this.ChangeFilters({ index, value: nonTotalItems[0].value });
+                        }
+                    }
+                });
+            }
+        },
     },
     watch: {
         '$route'(to, from) {
             this.ResetScroll();//重置滚动条
+            this.handleFilterDataUpdate();
         },//路由变化 重置页面滚动条位置
 
         updateScrollTop: {
@@ -250,6 +306,14 @@ export default {
                 this.ResetScroll();//重置滚动条
             },
         },
+        
+        // 监听筛选数据变化,动态过滤总分选项
+        filterData: {
+            deep: true,
+            handler() {
+                this.handleFilterDataUpdate();
+            }
+        }
 
     },
     beforeUnmount() {

+ 2 - 2
src/views/analysisReport/wrongQuestion/index.vue

@@ -33,7 +33,7 @@
                             </div>
 
                             <div class="question_content line_height_20">
-                                <Preview :type="question.sourceType" :content="question.questionData.questionStem"
+                                <Preview :type="question.sourceType" :content="question.questionData?.questionStem"
                                     :imgBase64="question.questionImg" />
                             </div>
 
@@ -163,7 +163,7 @@
                             </div>
 
                             <div class="question_content line_height_20">
-                                <Preview :type="1" :content="question.variationQuestion.questionStem" />
+                                <Preview :type="1" :content="question.variationQuestion?.questionStem" />
                             </div>
 
                             <!-- <div class="yuwen">

+ 0 - 1
src/views/layout/components/Header.vue

@@ -157,7 +157,6 @@ export default {
     },
 
     schoolLogo() {
-      console.log("打印学校logo",this.$store.state.user.schoolLogo);
       return this.$store.state.user.schoolLogo || "";
     }
   },

+ 1 - 1
version.json

@@ -1,5 +1,5 @@
 {
-  "version": "0.1.3_2026_3_26_0",
+  "version": "0.1.3_2026_3_27_0",
   "content": [
     {
       "time": "2024-11-1",