Prechádzať zdrojové kódy

多科设置、系统设置历次考试设置

liurongli 2 mesiacov pred
rodič
commit
03b935a0ad

+ 7 - 0
src/http/api/reportStudent.js

@@ -86,6 +86,13 @@ const jointSchoolReport = {
             data
         );
     },
+    //查询学生一生一案数据
+    getOneStudentOneCase(data) {
+        return get(
+            base.prefix + "/api/v1/studentData/getOneStudentOneCase",
+            data
+        );
+    },
 };
 //单校接口
 const schoolReport = {

+ 276 - 42
src/views/analysisReport/studentPage/studentCase/mainPage.vue

@@ -6,21 +6,14 @@
             </div>
             <div class="module_common">
                 <div class="module_common_title question_1">1.请填写你对各科的目标分数和目标排名。</div>
-                <div class="module_common_content">
-                    <el-table :data="subjectData.tableData" border stripe align="center">
-                        <el-table-column align="center" label="目标" fixed="left" min-width="148">
+                <div class="module_common_content module_table">
+                    <el-table :data="tableData" border stripe align="center">
+                        <el-table-column align="center" prop="target" label="目标" width="148"></el-table-column>
+                        <!-- 各科列 -->
+                        <el-table-column align="center" v-for="subject in subjects" :key="subject" :label="subject">
                             <template slot-scope="scope">
-                            
-                            </template>
-                        </el-table-column>
-                        <el-table-column align="center" label="语文" fixed="left" min-width="148">
-                            <template slot-scope="scope">
-                            
-                            </template>
-                        </el-table-column>
-                        <el-table-column align="center" label="数学" fixed="left" min-width="148">
-                            <template slot-scope="scope">
-                            
+                                {{ scope.row[subject] }}
+                                <!-- <el-input v-model="scope.row[subject]" style="width: 100%;" /> -->
                             </template>
                         </el-table-column>
                     </el-table>
@@ -28,20 +21,64 @@
             </div>
             <div class="module_common">
                 <div class="module_common_title question_2">2.请选择你认为的第1个薄弱学科,并填写你对该学科的计划和困惑。</div>
-                <div class="module_common_content">
-                    
+                <div class="module_common_content text_padding">
+                    <div class="common_content_title">薄弱学科1</div>
+                    <div class="common_content_select">
+                        <el-select v-model="firstWeakSubject.subjectName" placeholder="请选择科目">
+                            <el-option v-for="(item,index) in subjects" :key="`subject_1_${index}`" :label="item" :value="item"></el-option>
+                        </el-select>
+                    </div>
+                    <div class="common_content_subtitle">计划和困惑</div>
+                    <div class="common_content_text">
+                        <p>一、现状分析</p>
+                        <p>当前成绩水平(例如:90分/满分150分,班级排名40/50),客观描述:成绩持续在及格线附近波动,基础题失分严重,作文得分率长期低于40%。
+                        主观感受:对语文学习提不起兴趣,课堂笔记记不全,课后几乎不复习。</p>
+                        <p>薄弱环节诊断:基础知识(如字音字形、古诗文默写):失分率约60%,错别字多,背诵内容易混淆。阅读理解(现代文/文言文):读不懂文章主旨,答题抓不住要点,文言文实词积累不足。写作能力:立意浅显,素材陈旧,语言干瘪,经常写不满字数。学习习惯:无积累本,不爱读书,作业拖沓,对语文存在畏难情绪。</p>
+                        <p>二、提升计划(分阶段执行)</p>
+                        <p>【基础积累阶段】(第1-4周)</p>
+                        <p>每日必做:早读20分钟:背诵古诗文(每天2篇),默写并红笔订错。晚自习15分钟:整理“每日一记”(5个易错字音+5个成语)。</p>
+                        <p>每周任务:完成3篇文言文阅读(重点积累实词、虚词)。用思维导图梳理本周古诗文知识框架。</p>
+                        <p>目标:基础题失分率降至40%以内,能流畅翻译课内文言文。</p>
+                    </div>
                 </div>
             </div>
             <div class="module_common">
                 <div class="module_common_title question_3">3.请选择你认为的第2个薄弱学科,并填写你对该学科的计划和困惑。</div>
-                <div class="module_common_content">
-                    
+                <div class="module_common_content text_padding">
+                    <div class="common_content_title">薄弱学科2</div>
+                    <div class="common_content_select">
+                        <el-select v-model="secondWeakSubject.subjectName" placeholder="请选择科目">
+                            <el-option v-for="(item,index) in subjects" :key="`subject_2_${index}`" :label="item" :value="item"></el-option>
+                        </el-select>
+                    </div>
+                    <div class="common_content_subtitle">计划和困惑</div>
+                    <div class="common_content_text">
+                        <p>一、现状分析</p>
+                        <p>当前成绩水平(例如:90分/满分150分,班级排名40/50),客观描述:成绩持续在及格线附近波动,基础题失分严重,作文得分率长期低于40%。
+                        主观感受:对语文学习提不起兴趣,课堂笔记记不全,课后几乎不复习。</p>
+                        <p>薄弱环节诊断:基础知识(如字音字形、古诗文默写):失分率约60%,错别字多,背诵内容易混淆。阅读理解(现代文/文言文):读不懂文章主旨,答题抓不住要点,文言文实词积累不足。写作能力:立意浅显,素材陈旧,语言干瘪,经常写不满字数。学习习惯:无积累本,不爱读书,作业拖沓,对语文存在畏难情绪。</p>
+                        <p>二、提升计划(分阶段执行)</p>
+                        <p>【基础积累阶段】(第1-4周)</p>
+                        <p>每日必做:早读20分钟:背诵古诗文(每天2篇),默写并红笔订错。晚自习15分钟:整理“每日一记”(5个易错字音+5个成语)。</p>
+                        <p>每周任务:完成3篇文言文阅读(重点积累实词、虚词)。用思维导图梳理本周古诗文知识框架。</p>
+                        <p>目标:基础题失分率降至40%以内,能流畅翻译课内文言文。</p>
+                    </div>
                 </div>
             </div>
             <div class="module_common">
                 <div class="module_common_title question_4">4.针对学习上的问题,你最想与哪位老师沟通?并想让老师提供什么帮助?</div>
-                <div class="module_common_content">
-                    
+                <div class="module_common_content text_padding">
+                    <div class="common_content_text">
+                        <p>一、现状分析</p>
+                        <p>当前成绩水平(例如:90分/满分150分,班级排名40/50),客观描述:成绩持续在及格线附近波动,基础题失分严重,作文得分率长期低于40%。
+                        主观感受:对语文学习提不起兴趣,课堂笔记记不全,课后几乎不复习。</p>
+                        <p>薄弱环节诊断:基础知识(如字音字形、古诗文默写):失分率约60%,错别字多,背诵内容易混淆。阅读理解(现代文/文言文):读不懂文章主旨,答题抓不住要点,文言文实词积累不足。写作能力:立意浅显,素材陈旧,语言干瘪,经常写不满字数。学习习惯:无积累本,不爱读书,作业拖沓,对语文存在畏难情绪。</p>
+                        <p>二、提升计划(分阶段执行)</p>
+                        <p>【基础积累阶段】(第1-4周)</p>
+                        <p>每日必做:早读20分钟:背诵古诗文(每天2篇),默写并红笔订错。晚自习15分钟:整理“每日一记”(5个易错字音+5个成语)。</p>
+                        <p>每周任务:完成3篇文言文阅读(重点积累实词、虚词)。用思维导图梳理本周古诗文知识框架。</p>
+                        <p>目标:基础题失分率降至40%以内,能流畅翻译课内文言文。</p>
+                    </div>
                 </div>
             </div>
         </div>
@@ -51,38 +88,106 @@
 <script>
 import GotoTop from '@/views/analysisReport/components/GotoTop' //分析报告页面底部回到顶部组件
 export default {
-    name: 'subjectQuality',
-    props: {},
+    name: 'oneStudOneCase',
     components: {
         GotoTop
     },
     data() {
         return {
-            subjectData:{
-                tableData:[]
-            }
+            subjects:[],//科目
+            subjectsCode:[],//科目code
+            tableData: [],//表格数据
+            firstWeakSubject:{
+                subjectCode: 10,
+                subjectName: '',
+                textValue: ''
+            },//第一个薄弱学科
+            secondWeakSubject:{
+                subjectCode: 10,
+                subjectName: '',
+                textValue: ''
+            },//第二个薄弱学科
         }
     },
-    watch: {
-        reportParam() {
-        } //监听筛选数据变化
-    },
     computed: {
-        
+        reportParam() {
+            return {
+                examId: this.$store.state.report.filterObject.examId, //考试id
+            }
+        },
     },
     mounted() {
-
+        this.GetOneStudentOneCase();
     },
     methods: {
-
+        // 查询学生一生一案数据
+        GetOneStudentOneCase() {
+            this.$api.reportStudent.jointSchoolReport.getOneStudentOneCase(this.reportParam).then(res => {
+                if (res.code == 200 && res.data) {
+                    const { subjectVoList,studentGoalVoList,firstWeakSubject,secondWeakSubject} = res.data;
+                    if(studentGoalVoList){
+                        const studentGoalList = studentGoalVoList || [];
+                        this.subjects = [];
+                        this.subjectsCode = [];
+                        this.tableData = [];
+                        let obj1 = {target: '目标分数'},obj2 = {target: '目标排名'};
+                        studentGoalList.forEach(item => {
+                            this.subjects.push(item.subjectName);
+                            this.subjectsCode.push(item.subjectCode);
+                            obj1[item.subjectName] = item?.goalScore || '-';
+                            obj2[item.subjectName] = item?.goalRank || '-';
+                        });
+                        this.tableData.push(obj1,obj2)
+                    }else{
+                        const subjectList = subjectVoList || [];
+                        this.subjects = [];
+                        this.subjectsCode = [];
+                        this.tableData = [];
+                        let obj1 = {target: '目标分数'},obj2 = {target: '目标排名'};
+                        subjectList.forEach(item => {
+                            this.subjects.push(item.subjectName);
+                            this.subjectsCode.push(item.subjectCode);
+                            obj1[item.subjectName] = '-';
+                            obj2[item.subjectName] = '-';
+                        });
+                        this.tableData.push(obj1,obj2)
+                    }
+                    this.firstWeakSubject = {
+                        subjectCode: firstWeakSubject?.subjectCode || '',
+                        subjectName: firstWeakSubject?.subjectName || '',
+                        textValue: firstWeakSubject?.textValue || '暂无'
+                    };//第一个薄弱学科
+                    this.secondWeakSubject = {
+                        subjectCode: secondWeakSubject?.subjectCode || '',
+                        subjectName: secondWeakSubject?.subjectName || '',
+                        textValue: secondWeakSubject?.textValue || '暂无'
+                    };//第二个薄弱学科
+                } else {
+                    this.subjects = [];//科目
+                    this.subjectsCode = [];//科目code
+                    this.tableData = [];//表格数据
+                    this.firstWeakSubject = {
+                        subjectCode: '',
+                        subjectName: '',
+                        textValue: '暂无'
+                    };//第一个薄弱学科
+                    this.secondWeakSubject = {
+                        subjectCode: '',
+                        subjectName: '',
+                        textValue: '暂无'
+                    };//第二个薄弱学科
+                }
+            })
+        }
     }
 }
 </script>
 <style lang="scss" scoped>
-.report_module{
+.report_module {
     padding: 20px;
     box-sizing: border-box;
-    .introduction{
+
+    .introduction {
         width: 100%;
         // height: 200px;
         // background: url('@/assets/studentCase/banner.webp') left top no-repeat;
@@ -90,16 +195,19 @@ export default {
         // background: linear-gradient( 281deg, #007EFF 0%, #1F8FFE 10.96%, #89C8FB 34.86%, #CFE8FE 73.44%, #E5ECFC 100%);
         border-radius: 20px 20px;
         overflow: hidden;
-        img{
+
+        img {
             width: 100%;
         }
     }
-    .module_common{
+
+    .module_common {
         margin-top: 40px;
         width: 100%;
         padding-top: 40px;
         position: relative;
-        .module_common_title{
+
+        .module_common_title {
             position: absolute;
             z-index: 2;
             left: 0;
@@ -109,35 +217,161 @@ export default {
             line-height: 40px;
             color: #FFFFFF;
             padding-left: 24px;
-            &.question_1{
+
+            &.question_1 {
                 width: 367px;
                 height: 50px;
                 background: url('@/assets/studentCase/question_1.webp') left top no-repeat;
                 background-size: 100% 100%;
             }
-            &.question_2{
+
+            &.question_2 {
                 width: 556px;
                 height: 50px;
                 background: url('@/assets/studentCase/question_2.webp') left top no-repeat;
                 background-size: 100% 100%;
             }
-            &.question_3{
+
+            &.question_3 {
                 width: 556px;
                 height: 50px;
                 background: url('@/assets/studentCase/question_3.webp') left top no-repeat;
                 background-size: 100% 100%;
             }
-            &.question_4{
+
+            &.question_4 {
                 width: 596px;
                 height: 50px;
                 background: url('@/assets/studentCase/question_4.webp') left top no-repeat;
                 background-size: 100% 100%;
             }
         }
-        .module_common_content{
+
+        .module_common_content {
             width: 100%;
             background: #F4F9FF;
             border-radius: 0px 10px 10px 10px;
+
+            &.module_table {
+                padding: 40px;
+                box-sizing: border-box;
+
+                :deep(.el-table) {
+                    border-radius: 6px;
+                    border: 1px solid #5AAFFF;
+                    border-right: 0px solid #5AAFFF;
+                    border-bottom: 0px solid #5AAFFF;
+                    .el-table__header th {
+                        background-color: #EEF7FF;
+                        color: #303133;
+                        font-weight: 500;
+                        font-size: 16px;
+                        .cell {
+                            color: #303133;
+                            font-weight: 500;
+                            font-size: 16px;
+                        }
+                    }
+                    .el-table__body-wrapper {
+                        table {
+                            tr {
+                                td {
+                                    border-right: 1px solid #5AAFFF;
+                                    border-bottom: 1px solid #5AAFFF;
+                                }
+
+                                td:nth-last-child(2) {
+                                    border-right: 1px solid #5AAFFF;
+                                }
+
+                                td:last-child,
+                                th:last-child {
+                                    border-right: 0px solid #5AAFFF;
+                                }
+                            }
+                        }
+                    }
+
+                    thead {
+                        color: #333333 !important;
+                        font-weight: 500;
+                        font-size: 16px;
+                        height: 50px;
+                    }
+
+                    .cell {
+                        font-size: 16px;
+                        color: #333333;
+                        line-height: normal !important;
+                    }
+
+                    .el-table__cell {
+                        padding: 0;
+                        height: 50px;
+                    }
+                }
+            }
+            .el-table::before, .el-table--group::after, .el-table--border::after{
+                background-color:#5AAFFF;
+            }
+            :deep(.el-table__fixed)::before, :deep(.el-table__fixed-right)::before{
+                background-color:#5AAFFF;
+            }
+            :deep(.el-table--border) .el-table__cell{
+                border-right: 1px solid #5AAFFF;
+            }
+            :deep(.el-table) th.el-table__cell.is-leaf, :deep(.el-table) td.el-table__cell{
+                border-bottom: 1px solid #5AAFFF;
+            }
+            &.text_padding{
+                padding: 30px 20px 20px;
+                box-sizing: border-box;
+                .common_content_title{
+                    display: flex;
+                    width: 100%;
+                    font-weight: 600;
+                    font-size: 16px;
+                    color: #333333;
+                    line-height: 22px;
+                }
+                .common_content_select{
+                    display: flex;
+                    width: 100%;
+                    margin-top: 10px;
+                    :deep(.el-input__inner){
+                        height: 36px;
+                        line-height: 36px;
+                        padding:0 12px;
+                        background-color: #F4F9FF;
+                        border-radius: 4px;
+                        border: 1px solid #DCDFE6;
+                    }
+                    :deep(.el-input__icon){
+                        line-height: 36px;
+                    }
+                }
+                .common_content_subtitle{
+                    display: flex;
+                    width: 100%;
+                    margin: 30px 0 10px;
+                    font-weight: 600;
+                    font-size: 16px;
+                    color: #333333;
+                    line-height: 22px;
+                }
+                .common_content_text{
+                    display: flex;
+                    width: 100%;
+                    flex-direction: column;
+                    p{
+                        width: 100%;
+                        font-weight: 400;
+                        font-size: 14px;
+                        color: #333333;
+                        line-height: 24px;
+                    }
+                }
+            }
         }
     }
 }