lm пре 2 недеља
родитељ
комит
8266f8c4d1

+ 22 - 4
src/components/subjectAndClassChooseDialog/SubjectAndClassChooseDialog.vue

@@ -48,12 +48,30 @@ const ConfirmFormDialog = async (params)=>{
     formSubmitLoading.value = true
     const {formData,formRef} = params
     console.log('提交的表单信息---',formData)
-   
-    // 保存表单信息
+
+    // 教学班的班级数据
     let subjectClassObj = {...formData}
     delete subjectClassObj.electiveSubject
-    let evaluationSubjectIds = formData.electiveSubject
-    let evaluationClassIds = Object.values(subjectClassObj)
+
+
+    // 删除不在页面上展示的数据
+    let exitstSelectedKeys = Object.keys(subjectClassObj)  //已勾选的班级选中
+    let fixedKeys= noElectiveTeachingSubjectFormItms.value?.map(item=>item.key)  // 必须勾选的班级选中
+    let existElectiveSubject = formData.electiveSubject   // (展示)的可选科目
+    let deleteKeys = exitstSelectedKeys.filter(key=>{
+        return !(fixedKeys.includes(key) || existElectiveSubject.includes(key))
+    })
+    // 删除不在页面上展示的已勾选班级项
+    deleteKeys.map(item=>{
+        delete subjectClassObj[item]
+    })
+    
+    let evaluationClassIds = Object.values(subjectClassObj)  // 最终传递的 选科班级 ids
+    let evaluationSubjectIds = formData.electiveSubject   // 选中的选科 ids
+
+
+
+    // 保存表单信息
     let transferParams = {
         evaluationSubjectIds,
         evaluationClassIds

+ 18 - 24
src/views/appView/QuestionnaireElectiveSubject.vue

@@ -83,7 +83,7 @@ const electiveTeachingSubjectFormItms = ref<FormItm[]>([])   // 选科 教学班
 const electiveNeedCount = ref(0)  //选科的必选数量
 
 // 存储选中的 选科/班级   项目
-const selectedElectives = ref([])  // 选中的选科项
+const selectedElectives = ref<string[]>([])  // 选中的选科项
 const selectedTeachingClass = ref<Record<string,string[]>>({}) // 选中的教学班 班级项
 
 // 切换科目选中状态
@@ -92,18 +92,7 @@ const handleSelectChange = (val)=>{
     // if(val.length >2){
     //     selectedElectives.value.splice(0, val.length- 2)
     // }
-
-    // 选中状态也需要更新
-    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 selectedTeachingClass.value[item]
-    })
-
+    
     // 动态的 选科 科目班级  配置(展示)项列表
     let finalElectiveTeachingSubjectData = LoadDynamicElectiveSubjectClass(val)
     // // 动态变更 教学班选项的信息
@@ -114,19 +103,23 @@ const handleSelectChange = (val)=>{
 
 // 点击确认
 const handle_confirm = async () => {
-    let evaluationSubjectIds = selectedElectives.value
-
-    let subjectClassObj = {...selectedTeachingClass.value}
-
-
     // 最终提交只保留 展示的项
-    let evaluationClassIds = Object.values(subjectClassObj)
-
+    let exitstSelectedKeys = Object.keys(selectedTeachingClass.value)
+    let fixedKeys= noElectiveTeachingSubjectFormItms.value?.map(item=>item.key)
+    let deleteKeys = exitstSelectedKeys.filter(key=>{
+        return !(fixedKeys.includes(key) || selectedElectives.value.includes(key))
+    })
+    // 删除不在页面上展示的已选中班级项
+    deleteKeys.map(item=>{
+        delete selectedTeachingClass.value[item]
+    })
 
-    if(evaluationSubjectIds.length > electiveNeedCount.value){
+    // 添加选科校验
+    let evaluationClassIds = Object.values(selectedTeachingClass.value)
+    if(selectedElectives.value.length > electiveNeedCount.value){
         ElMessage.warning(`选科数量最多为${electiveNeedCount.value}个`)
         return
-    }else if(evaluationSubjectIds.length < electiveNeedCount.value){
+    }else if(selectedElectives.value.length < electiveNeedCount.value){
         ElMessage.warning(`选科数量最少为${electiveNeedCount.value}个`)
         return 
     }
@@ -134,9 +127,10 @@ const handle_confirm = async () => {
         ElMessage.warning('请确保选科班级填写完整')
         return
     }
-    
+
+    // 保存选科
     let transferParams = {
-        evaluationSubjectIds,
+        evaluationSubjectIds:selectedElectives.value,
         evaluationClassIds
     }
     let res = undefined

+ 10 - 4
src/views/selfQuestionnaireProcess/SelfQuestionnaireProcess.vue

@@ -66,6 +66,7 @@
         <SubjectAndClassChooseDialog 
             v-if="formVisible"
             v-model:formVisible="formVisible" 
+            @confirm="HandleElectiveSubjectConfirm"
         />
     </div>
 </template>
@@ -77,7 +78,6 @@ import SubjectAndClassChooseDialog from '@/components/subjectAndClassChooseDialo
 import { subjectToColor,fillOutStatusToColor } from '@/components/commonDictConvert';
 import {getEvaluationProcessMsgApi} from '@/api/selfQuestionnaireProcess'
 
-
 interface TeacherItm {
     id: string|number
     evaluationClassName: string     //班级
@@ -96,16 +96,18 @@ const evaluationOverCount = ref()   // 已评科目数量
 const evaluationNotOverCount = ref()  //待评科目数量
 const deadlineTime = ref()      //评价截止时间
 const remainTime = ref()      //剩余时间
-
 // 教师列表数据
 const teacherList = ref<TeacherItm[]>([]);
 
-
 // 打开更改科目班级弹窗
 const formVisible = ref(false)
 const OpenFormDialog = ()=>{
     formVisible.value = true
 }
+// 选科变更成功后的后续操作
+const HandleElectiveSubjectConfirm = async ()=>{
+    await GetEvaluationProcessMsg()
+}
 
 // 跳转到填写问卷页
 const GoToFillOutQuestionnaire = ()=>{
@@ -114,7 +116,7 @@ const GoToFillOutQuestionnaire = ()=>{
     router.push('/main/questionnaireCommit')
 }
 
-onMounted( async()=>{
+const GetEvaluationProcessMsg = async ()=>{
     let res = await getEvaluationProcessMsgApi()
     if(res?.code == 200){
         teacherCount.value = res.data.teacherCount
@@ -124,6 +126,10 @@ onMounted( async()=>{
         remainTime.value = res.data.endTime
         teacherList.value = res.data.dataList
     }
+}
+
+onMounted( async()=>{
+    await GetEvaluationProcessMsg()
 })
 </script>