Prechádzať zdrojové kódy

修改问卷选科接口调用

lm 2 týždňov pred
rodič
commit
6806d6868b

+ 1 - 1
src/components/QuestionTypeShow.vue

@@ -12,7 +12,7 @@
             :value="radioItem.id"
         >
             {{ radioItem.content }}
-    </el-radio>
+        </el-radio>
     </el-radio-group>
         
     <!-- 多选 -->

+ 55 - 31
src/components/subjectAndClassChooseDialog/SubjectAndClassChooseDialog.vue

@@ -69,6 +69,32 @@ const ConfirmFormDialog = async (params)=>{
     formSubmitLoading.value = false
 }
 
+
+
+// 动态加载 不定项选科数据
+const LoadDynamicElectiveSubjectClass = (selectedSubject:string[])=>{
+    // 动态的 选科 科目班级  配置(展示)项列表
+    return electiveSubjectClassData.value?.filter(item=>{
+        return selectedSubject.includes(item.evaluationSubjectId)
+    })?.map(subjectMsg=>{
+        let classOpts = subjectMsg?.classData?.map(classItm=>{
+            return {label:classItm.name, value:classItm.evaluationClassId}
+        }) || []
+        return {
+            key: subjectMsg.evaluationSubjectId,
+            label: subjectMsg.subjectName,
+            type:'radio',
+            rules:[
+                {required:true,trigger:'blur',message:'请选择'}
+            ],
+            hidden:false,
+            custom:false,
+            style:{},
+            selectList:classOpts,
+        }
+    }) || []
+}
+
 const HandleFormChange = (params)=>{
     const {key,val,formData} = params
     if(key == 'electiveSubject'){
@@ -80,25 +106,8 @@ const HandleFormChange = (params)=>{
         //     formData[key].splice(0, val.length- electiveNeedCount.value)
         // }
         // 动态的 选科 科目班级  配置(展示)项列表
-        let finalElectiveTeachingSubjectData = electiveSubjectClassData.value.filter(item=>{
-            return val.includes(item.evaluationSubjectId)
-        })?.map(subjectMsg=>{
-            let classOpts = subjectMsg?.classData?.map(classItm=>{
-                return {label:classItm.name, value:classItm.id}
-            }) || []
-            return {
-                key: subjectMsg.evaluationSubjectId,
-                label: subjectMsg.subjectName,
-                type:'radio',
-                rules:[
-                    {required:true,trigger:'blur',message:'请选择'}
-                ],
-                hidden:false,
-                custom:false,
-                style:{},
-                selectList:classOpts,
-            }
-        })
+        let finalElectiveTeachingSubjectData = LoadDynamicElectiveSubjectClass(val)
+       
         // 动态变更 教学班选项的显示隐藏
         formItemList.value = electiveFormItm.value ? [
             electiveFormItm.value,
@@ -134,13 +143,15 @@ onMounted( async()=>{
         let electiveSubjectOptions = subjectData?.map(item=>{
             return {
                 label:item.name,
-                value:item.id
+                value:item.evaluationSubjectId,
             }
         }) || []
+
+        // 默认选中的选科数据
         selectedElectives.value = subjectData?.filter(subject=>{
             return subject.usedStatus    // 是否选中,false-否,true-是
         }).map(itm=>{
-            return itm.id
+            return itm.evaluationSubjectId
         })
 
         // 选科表单项配置
@@ -174,7 +185,9 @@ onMounted( async()=>{
          // 非选科的 科目教学班配置项列表
         noElectiveTeachingSubjectFormItms.value = noElectiveSubjectClassData.map(subjectMsg=>{
             let classOpts = subjectMsg?.classData?.map(classItm=>{
-                return {label:classItm.name, value:classItm.id}
+                return {label:classItm.name, 
+                        value:classItm.evaluationClassId
+                        }
             }) || []
 
             return {
@@ -200,11 +213,9 @@ onMounted( async()=>{
 
         //(3) 每个科目的默认选中班级赋值
         classData?.map(subjectClass=>{
-            let selectedClass = subjectClass.classData.filter(classItm=>{
+            let selectedClass = subjectClass.classData.find(classItm=>{
                 return classItm.usedStatus
-            }).map(itm=>{
-                return  itm.id
-            })
+            })?.evaluationClassId
             selectedTeachingClass.value[subjectClass.evaluationSubjectId] = selectedClass
         })
 
@@ -212,12 +223,25 @@ onMounted( async()=>{
 
         // 3. 最终的教学班配置项列表
         // 默认只显示 非选科中的科目教学班数据
-        formItemList.value =electiveFormItm.value ? [
-            electiveFormItm.value,
-            ...noElectiveTeachingSubjectFormItms.value
-        ] : noElectiveTeachingSubjectFormItms.value
-    }
 
+        let initFormItm = []
+
+        if(electiveFormItm.value){
+            initFormItm.push(electiveFormItm.value)
+        }
+        if(noElectiveTeachingSubjectFormItms.value.length > 0){
+            initFormItm.push(...noElectiveTeachingSubjectFormItms.value)
+        }
+        // 判断是否加载 动态数据
+        let finalElectiveTeachingSubjectData = LoadDynamicElectiveSubjectClass(selectedElectives.value)
+        formItemList.value = [...initFormItm,...finalElectiveTeachingSubjectData]
+    
+        console.log('默认选中的选科数据',selectedElectives.value)
+        console.log('默认选中的班级数据',selectedTeachingClass.value)
+
+        defaultFormData.value.electiveSubject = selectedElectives.value
+        defaultFormData.value = {...defaultFormData.value,...selectedTeachingClass.value}
+    }
 })
 
 </script>

+ 57 - 41
src/views/appView/QuestionnaireElectiveSubject.vue

@@ -4,7 +4,7 @@
         <div class="section" v-if="electiveFormItm?.label">
             <div class="section_title">{{electiveFormItm?.label}}:</div>
             <el-checkbox-group  
-                v-model="selectedSubjects"
+                v-model="selectedElectives"
                 class="check_group_btn_list"
                 @change="(val)=>handleSelectChange(val)">
                 <el-checkbox-button 
@@ -20,7 +20,7 @@
             <div class="section">
                 <div class=" section_title">{{ sub.label }}:</div>
                 <el-radio-group 
-                    v-model="selectedSubjectClasses[sub.key]" 
+                    v-model="selectedTeachingClass[sub.key]" 
                     class="radio_group_list">
                     <el-radio v-for="classItm in sub.selectList" :key="classItm.value" :value="classItm.value">
                         {{ classItm.label }}
@@ -34,7 +34,7 @@
             <div class="section">
                 <div class=" section_title">{{ sub.label }}:</div>
                 <el-radio-group 
-                    v-model="selectedSubjectClasses[sub.key]" 
+                    v-model="selectedTeachingClass[sub.key]" 
                     class="radio_group_list">
                     <el-radio v-for="classItm in sub.selectList" 
                             :key="classItm.value" 
@@ -86,51 +86,26 @@ const electiveNeedCount = ref(0)  //选科的必选数量
 const selectedElectives = ref([])  // 选中的选科项
 const selectedTeachingClass = ref<Record<string,string[]>>({}) // 选中的教学班 班级项
 
-// 选中的信息
-const selectedSubjectClasses = ref<Record<string,string>>({});  // 已选科目的班级id 列表
-const selectedSubjects = ref<string[]>([]) // 已选中的科目列表
-
-
-
 // 切换科目选中状态
 const handleSelectChange = (val)=>{
     // 先要限制科目数量
     // if(val.length >2){
-    //     selectedSubjects.value.splice(0, val.length- 2)
+    //     selectedElectives.value.splice(0, val.length- 2)
     // }
 
     // 选中状态也需要更新
-    let exitstSelectedKeys = Object.keys(selectedSubjectClasses.value)
+    let exitstSelectedKeys = Object.keys(selectedTeachingClass.value)
     let fixedKeys= noElectiveTeachingSubjectFormItms.value?.map(item=>item.key)
     let deleteKeys = exitstSelectedKeys.filter(key=>{
         !(fixedKeys.includes(key) || val.includes(key))
     })
     // 删除不在页面上展示的已选中班级项
     deleteKeys.map(item=>{
-        delete selectedSubjectClasses.value[item]
+        delete selectedTeachingClass.value[item]
     })
 
-
     // 动态的 选科 科目班级  配置(展示)项列表
-    let finalElectiveTeachingSubjectData = electiveSubjectClassData.value.filter(item=>{
-        return val.includes(item.evaluationSubjectId)
-    })?.map(subjectMsg=>{
-        let classOpts = subjectMsg?.classData?.map(classItm=>{
-            return {label:classItm.name, value:classItm.id}
-        }) || []
-        return {
-            key: subjectMsg.evaluationSubjectId,
-            label: subjectMsg.subjectName,
-            type:'radio',
-            rules:[
-                {required:true,trigger:'blur',message:'请选择'}
-            ],
-            hidden:false,
-            custom:false,
-            style:{},
-            selectList:classOpts,
-        }
-    })
+    let finalElectiveTeachingSubjectData = LoadDynamicElectiveSubjectClass(val)
     // // 动态变更 教学班选项的信息
     electiveTeachingSubjectFormItms.value = finalElectiveTeachingSubjectData
 }
@@ -139,9 +114,9 @@ const handleSelectChange = (val)=>{
 
 // 点击确认
 const handle_confirm = async () => {
-    let evaluationSubjectIds = selectedSubjects.value
+    let evaluationSubjectIds = selectedElectives.value
 
-    let subjectClassObj = {...selectedSubjectClasses.value}
+    let subjectClassObj = {...selectedTeachingClass.value}
 
 
     // 最终提交只保留 展示的项
@@ -174,6 +149,31 @@ const handle_confirm = async () => {
 };
 
 
+// 动态加载 不定项选科数据
+const LoadDynamicElectiveSubjectClass = (selectedSubject:string[])=>{
+    // 动态的 选科 科目班级  配置(展示)项列表
+    return electiveSubjectClassData.value?.filter(item=>{
+        return selectedSubject.includes(item.evaluationSubjectId)
+    })?.map(subjectMsg=>{
+        let classOpts = subjectMsg?.classData?.map(classItm=>{
+            return {label:classItm.name, value:classItm.evaluationClassId}
+        }) || []
+        return {
+            key: subjectMsg.evaluationSubjectId,
+            label: subjectMsg.subjectName,
+            type:'radio',
+            rules:[
+                {required:true,trigger:'blur',message:'请选择'}
+            ],
+            hidden:false,
+            custom:false,
+            style:{},
+            selectList:classOpts,
+        }
+    }) || []
+}
+
+
 onMounted( async()=>{
     console.log('加载了')
     let res = await getEvaluationSubjectApi()
@@ -184,13 +184,14 @@ onMounted( async()=>{
         let electiveSubjectOptions = subjectData?.map(item=>{
             return {
                 label:item.name,
-                value:item.id
+                value:item.evaluationSubjectId
             }
         }) || []
+        // 默认选中的选科数据
         selectedElectives.value = subjectData?.filter(subject=>{
             return subject.usedStatus    // 是否选中,false-否,true-是
         }).map(itm=>{
-            return itm.id
+            return itm.evaluationSubjectId
         })
 
 
@@ -224,7 +225,7 @@ onMounted( async()=>{
          // 非选科的 科目教学班配置项列表
         noElectiveTeachingSubjectFormItms.value = noElectiveSubjectClassData.map(subjectMsg=>{
             let classOpts = subjectMsg?.classData?.map(classItm=>{
-                return {label:classItm.name, value:classItm.id}
+                return {label:classItm.name, value:classItm.evaluationClassId}
             }) || []
 
             return {
@@ -250,13 +251,28 @@ onMounted( async()=>{
 
         //(3) 每个科目的默认选中班级赋值
         classData?.map(subjectClass=>{
-            let selectedClass = subjectClass.classData.filter(classItm=>{
+            let selectedClass = subjectClass.classData.find(classItm=>{
                 return classItm.usedStatus
-            }).map(itm=>{
-                return  itm.id
-            })
+            })?.evaluationClassId
             selectedTeachingClass.value[subjectClass.evaluationSubjectId] = selectedClass
         })
+
+
+
+        // 3. 最终的教学班配置项列表
+
+        let initFormItm = []
+
+        if(electiveFormItm.value){
+            initFormItm.push(electiveFormItm.value)
+        }
+        if(noElectiveTeachingSubjectFormItms.value.length > 0){
+            initFormItm.push(...noElectiveTeachingSubjectFormItms.value)
+        }
+
+        // 获取需要加载的 动态数据
+        let finalElectiveTeachingSubjectData = LoadDynamicElectiveSubjectClass(selectedElectives.value)
+        electiveTeachingSubjectFormItms.value = finalElectiveTeachingSubjectData
     }
 })