Browse Source

一生一案接口对接

liurongli 2 tháng trước cách đây
mục cha
commit
cb37e2b6df

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

@@ -93,6 +93,13 @@ const jointSchoolReport = {
             data
         );
     },
+    //编辑提交学生一生一案数据
+    changeOneStudentOneCase(data) {
+        return post(
+            base.prefix + "/api/v1/studentData/changeOneStudentOneCase",
+            data
+        );
+    },
 };
 //单校接口
 const schoolReport = {

+ 7 - 0
src/views/analysisReport/studentPage/mainPage.vue

@@ -23,6 +23,7 @@
                     <el-button :disabled="!canBtnClick" type="primary" size="medium"
                         @click="downloadWrongQuestions(1)">下载个性化提升手册</el-button>
                 </template>
+                <el-button v-if="showOneStudOneCase" size="medium" type="primary" @click="EditOneStudOneCase" style="width: 96px;">{{ !isEditOneStudOneCase?'开始编辑':'提交' }}</el-button>
                 <!-- <el-button v-if="isShowPadfBtn" style="margin-left: 10px;" size="medium" type="primary" :loading="stuPdfLoading" @click="StuDownloadPDF">下载PDF</el-button> -->
             </div>
         </div>
@@ -143,6 +144,7 @@ export default {
             pathFourth: '/studentAnalysisReport/reportDetails/studentCase',//一生一案
             isLianXiao: false,//是否联校
             stuPdfLoading: false,
+            isEditOneStudOneCase:false
         };
     },
 
@@ -314,6 +316,11 @@ export default {
                 });
             }
         },
+        //编辑一生一案
+        EditOneStudOneCase(){
+            this.isEditOneStudOneCase = !this.isEditOneStudOneCase;
+            this.$refs.child.EditOneStudOneCase(this.isEditOneStudOneCase);
+        }
     },
     watch: {
         '$route'(to, from) {

+ 108 - 33
src/views/analysisReport/studentPage/studentCase/mainPage.vue

@@ -8,12 +8,14 @@
                 <div class="module_common_title question_1">1.请填写你对各科的目标分数和目标排名。</div>
                 <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" prop="target" label="目标" width="148" v-if="tableData.length > 0"></el-table-column>
                         <!-- 各科列 -->
                         <el-table-column align="center" v-for="subject in subjects" :key="subject" :label="subject">
                             <template slot-scope="scope">
-                                {{ scope.row[subject] }}
-                                <!-- <el-input v-model="scope.row[subject]" style="width: 100%;" /> -->
+                                <template v-if="!isEdit">
+                                    {{ scope.row[subject] }}
+                                </template>
+                                <el-input v-else v-model="scope.row[subject]" style="width: 100%;" @input="ValidateNumber(scope.row,subject)" />
                             </template>
                         </el-table-column>
                     </el-table>
@@ -24,21 +26,17 @@
                 <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-select v-model="firstWeakSubject.subjectName" placeholder="请选择科目" @change="ChangeFirstWeakSubject">
                             <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>
+                        <el-input v-if="isEdit" type="textarea" placeholder="请输入你对该学科的计划和困惑。" v-model="firstWeakSubject.textValue" :rows="9" maxlength="1000" show-word-limit></el-input>
+                        <template v-else>
+                            <!-- <p>一、现状分析</p> -->
+                             {{ firstWeakSubject.textValue }}
+                        </template>
                     </div>
                 </div>
             </div>
@@ -47,21 +45,17 @@
                 <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-select v-model="secondWeakSubject.subjectName" placeholder="请选择科目" @change="ChangeSecondWeakSubject">
                             <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>
+                        <el-input v-if="isEdit" type="textarea" placeholder="请输入你对该学科的计划和困惑。" v-model="secondWeakSubject.textValue" :rows="9" maxlength="1000" show-word-limit></el-input>
+                        <template v-else>
+                            <!-- <p>一、现状分析</p> -->
+                            {{ secondWeakSubject.textValue }}
+                        </template>
                     </div>
                 </div>
             </div>
@@ -69,15 +63,10 @@
                 <div class="module_common_title question_4">4.针对学习上的问题,你最想与哪位老师沟通?并想让老师提供什么帮助?</div>
                 <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>
+                        <el-input v-if="isEdit" type="textarea" placeholder="请输入你对该学科的计划和困惑。" v-model="needTeacherValue" :rows="9" maxlength="1000" show-word-limit></el-input>
+                        <template v-else>
+                            {{ needTeacherValue }}
+                        </template>
                     </div>
                 </div>
             </div>
@@ -97,6 +86,12 @@ export default {
             subjects:[],//科目
             subjectsCode:[],//科目code
             tableData: [],//表格数据
+            id: '',
+            examId: '',
+            schoolId: '',
+            studentName: '',
+            studentNo: '',
+            studentCode: '',
             firstWeakSubject:{
                 subjectCode: 10,
                 subjectName: '',
@@ -107,6 +102,8 @@ export default {
                 subjectName: '',
                 textValue: ''
             },//第二个薄弱学科
+            needTeacherValue:'',//
+            isEdit:false,//是否可编辑
         }
     },
     computed: {
@@ -120,11 +117,15 @@ export default {
         this.GetOneStudentOneCase();
     },
     methods: {
+        ValidateNumber(row,subject) {
+            // 只允许数字输入
+            row[subject] = row[subject].replace(/[^0-9.]/g, '');
+        },
         // 查询学生一生一案数据
         GetOneStudentOneCase() {
             this.$api.reportStudent.jointSchoolReport.getOneStudentOneCase(this.reportParam).then(res => {
                 if (res.code == 200 && res.data) {
-                    const { subjectVoList,studentGoalVoList,firstWeakSubject,secondWeakSubject} = res.data;
+                    const {id,examId,schoolId,studentName,studentNo,studentCode,subjectVoList,studentGoalVoList,firstWeakSubject,secondWeakSubject,needTeacherValue} = res.data;
                     if(studentGoalVoList){
                         const studentGoalList = studentGoalVoList || [];
                         this.subjects = [];
@@ -152,6 +153,12 @@ export default {
                         });
                         this.tableData.push(obj1,obj2)
                     }
+                    this.id = id;
+                    this.examId = examId;
+                    this.schoolId = schoolId;
+                    this.studentName = studentName;
+                    this.studentNo = studentNo;
+                    this.studentCode = studentCode;
                     this.firstWeakSubject = {
                         subjectCode: firstWeakSubject?.subjectCode || '',
                         subjectName: firstWeakSubject?.subjectName || '',
@@ -162,10 +169,17 @@ export default {
                         subjectName: secondWeakSubject?.subjectName || '',
                         textValue: secondWeakSubject?.textValue || '暂无'
                     };//第二个薄弱学科
+                    this.needTeacherValue = needTeacherValue || '暂无';
                 } else {
                     this.subjects = [];//科目
                     this.subjectsCode = [];//科目code
                     this.tableData = [];//表格数据
+                    this.id = '';
+                    this.examId = '';
+                    this.schoolId = '';
+                    this.studentName = '';
+                    this.studentNo = '';
+                    this.studentCode = '';
                     this.firstWeakSubject = {
                         subjectCode: '',
                         subjectName: '',
@@ -176,8 +190,49 @@ export default {
                         subjectName: '',
                         textValue: '暂无'
                     };//第二个薄弱学科
+                    this.needTeacherValue = '暂无';
                 }
             })
+        },
+        //编辑
+        EditOneStudOneCase(isEdit){
+            this.isEdit = isEdit;
+            if(!isEdit){
+                const studentGoalVoList = this.subjects.map((item,index)=>{
+                    return {
+                        subjectCode: this.subjectsCode[index],
+                        subjectName: item,
+                        goalScore: this.tableData[0][item],
+                        goalRank: this.tableData[1][item]
+                    }
+                });
+                this.$api.reportStudent.jointSchoolReport.changeOneStudentOneCase({
+                    id:this.id,
+                    examId:this.examId,
+                    schoolId:this.schoolId,
+                    studentName:this.studentName,
+                    studentNo:this.studentNo,
+                    studentCode:this.studentCode,
+                    studentGoalVoList:studentGoalVoList,
+                    firstWeakSubject:this.firstWeakSubject,
+                    secondWeakSubject:this.secondWeakSubject,
+                    needTeacherValue:this.needTeacherValue
+                }).then(res => {
+                    if(res.code == 200){
+                        this.$message.success(res.msg);
+                    }else{
+                        this.$message.error(res.msg);
+                    }
+                })
+            }
+        },
+        ChangeFirstWeakSubject(val){
+            const index = this.subjects.indexOf(val);
+            this.firstWeakSubject.subjectCode = this.subjectsCode?.[index] || '';
+        },
+        ChangeSecondWeakSubject(val){
+            const index = this.subjects.indexOf(val);
+            this.secondWeakSubject.subjectCode = this.subjectsCode?.[index] || '';
         }
     }
 }
@@ -278,6 +333,17 @@ export default {
                                 td {
                                     border-right: 1px solid #5AAFFF;
                                     border-bottom: 1px solid #5AAFFF;
+                                    &:first-child{
+                                        background-color: #EEF7FF;
+                                    }
+                                    .el-input__inner{
+                                        height: 36px;
+                                        line-height: 36px;
+                                        font-weight: 400;
+                                        font-size: 16px;
+                                        color: #333333;
+                                        text-align: center;
+                                    }
                                 }
 
                                 td:nth-last-child(2) {
@@ -324,6 +390,7 @@ export default {
                 border-bottom: 1px solid #5AAFFF;
             }
             &.text_padding{
+                min-height: 240px;
                 padding: 30px 20px 20px;
                 box-sizing: border-box;
                 .common_content_title{
@@ -363,6 +430,14 @@ export default {
                     display: flex;
                     width: 100%;
                     flex-direction: column;
+                    :deep(.el-textarea__inner){
+                        border-radius: 10px;
+                        border: 1px solid #DCDFE6;
+                        font-weight: 400;
+                        font-size: 14px;
+                        color: #333333;
+                        line-height: 24px;
+                    }
                     p{
                         width: 100%;
                         font-weight: 400;