Przeglądaj źródła

修改 选科数量限制 和 选科/科目 新增接口逻辑

lm 1 miesiąc temu
rodzic
commit
990727e9f4

+ 6 - 2
src/components/ReviewManagementDetailSideBar.vue

@@ -2,7 +2,7 @@
     <!-- 左侧导航栏 -->
     <div class="left_nav">
       <div class="nav_header">
-          XXX考试考试考试考试考试
+        {{ evaluationManageDetailName }}
       </div>
       
       <div class="back_btn">
@@ -35,7 +35,7 @@
 
 
 <script setup lang="ts">
-import { onMounted, ref } from 'vue';
+import { computed, onMounted, ref } from 'vue';
 import { useRoute } from 'vue-router';
 import backIcon from '@/assets/icon/left_back_arrow_.png'
 import router from '@/router';
@@ -94,6 +94,10 @@ const HandleChangeStep=(currentStep)=>{
   router.push(`${currentStep.route}?id=${route.query.id}`)
 }
 
+const evaluationManageDetailName = computed(()=>{
+  return sessionStorage.getItem('evaluationManageDetailName')
+})
+
 onMounted(()=>{
   let stepName = route.params.stepName
   let matchRes = stepMsgs.value.find(item=>{

+ 1 - 0
src/views/reviewManagement/ReviewManagement.vue

@@ -276,6 +276,7 @@ const GetQuestionnaireTaskList = async ()=>{
 
 // 跳转问卷评价详情页
 const GoToQuestionnaireReviewDetail = (row)=>{
+    sessionStorage.setItem('evaluationManageDetailName',row.evaluationName)
     router.push(`/main/reviewManagementDetail/evaluationData?id=${row.id}`)
 }
 

+ 5 - 1
src/views/reviewManagement/ReviewManagementDetail.vue

@@ -7,7 +7,7 @@
 
 <script setup lang="ts">
 import { useRoute,useRouter } from 'vue-router';
-import { computed, onMounted, ref } from 'vue';
+import { computed, onBeforeUnmount, onMounted, ref } from 'vue';
 import Step1Component from './stepComponent/step1Component/Step1Component.vue';
 
 import Step2Component from './stepComponent/step2Component/Step2Component.vue';
@@ -39,6 +39,10 @@ const curentComponent = computed(()=>{
 })
 
 
+onBeforeUnmount(()=>{
+  // 清除 评价管理详情页的标题
+  sessionStorage.removeItem('evaluationManageDetailName')
+})
 </script>
 
 

+ 82 - 77
src/views/reviewManagement/stepComponent/step1Component/Step1Component.vue

@@ -31,9 +31,17 @@
                   <el-checkbox v-model="gradeOpt.selectionStatus" >选科</el-checkbox>
                   <div class="selection_params" v-if="gradeOpt.selectionStatus">
                     <span class="param_text">一共 </span>
-                    <el-input type="number" :max="5" :min="1" v-model="gradeOpt.selectionCount"></el-input>
+                    <el-input type="number" 
+                      :max="gradeOpt.subjectCount" :min="1" 
+                      v-model="gradeOpt.selectionCount"
+                      @blur="HandleInputBlur(gradeOpt.subjectCount,gradeOpt,'selectionCount')">
+                    </el-input>
                     <span class="param_text"> 科,需要选择 </span>
-                    <el-input type="number" :max="5" :min="1"  v-model="gradeOpt.needCount"></el-input>
+                    <el-input type="number" 
+                      :max="gradeOpt.subjectCount" :min="1"  
+                      v-model="gradeOpt.needCount" 
+                      @blur="HandleInputBlur(gradeOpt.selectionCount,gradeOpt,'needCount')">
+                    </el-input>
                     <span class="param_text"> 科</span>
                 </div>
                   
@@ -157,7 +165,7 @@
         :formItemList="addSubjectFormItemList"
         :visible="addSubjectDialogVisible"
         @close="CloseAddSubjectForm"
-        @confirm="CloseAddSubjectForm"
+        @confirm="SaveGradeSubjectOpt"
       >
         <template #subject>
             <div class="subject_option_container">
@@ -169,7 +177,7 @@
 
                 <div class="tree">
                   <TreeList 
-                    v-model:treeRef="optionalSubjetTree"
+                    v-model:treeRef="optionalSubjetTreeDom"
                     :defaultTreeData="allTreeData" 
                     :showCheckBox="true"
                     operation="none"
@@ -202,7 +210,8 @@
         :submit-loading="deleteDialogLoading" 
         :visible="deleteDialogVisible" 
         @close="HandleDeleteClose"
-        @confirm="HandleDeleteConfirm"></Dialog>
+        @confirm="HandleDeleteConfirm">
+      </Dialog>
 
       
     </div>
@@ -276,7 +285,9 @@ const GetEvaluationDataDetail = async () => {
         // 寻找默认选中的班级  selectStatus 1 选中  0 未选中
         selectedClassData:item.classData?.filter(classItm=>{
           return Number(classItm?.selectStatus) === 1
-        }).map(aim=>aim.id)
+        }).map(aim=>aim.id),
+
+        selectionStatus: item.selectionStatus ? true : false
       }
     }) 
     defaultGradeFormData.value.grade = res?.data?.map(item=>{
@@ -346,19 +357,18 @@ const EditSelectedGrade =  async()=>{
 
 
 // 4. 配置科目/选科 弹窗操作
-const optionalSubjetTree = ref()
+const optionalSubjetTreeDom = ref()  //可选列表Tree Dom
 const addSubjectDialogVisible = ref(false);
 const addSubjectDialogLoading = ref(false);
 const subjectTitle = ref('配置科目/选科');
 const currentOpenType = ref('')  //当前打开的弹窗类型  subject 、selectedSubject ,grade ,
-const currentOperationRow = ref()
-// 已选的数据
-const selectedTreeData = ref([])
-// 所有可选的数据
-const allTreeData = ref([])
-
-// 可选科目列表赋值
-const RenderOptionalSubjectTree = async (type,row)=>{
+const currentOperationRow = ref()  //当前操作的行
+const selectedTreeData = ref([])  //已选列表
+const allTreeData = ref([])   //可选列表
+const selectedSubjectIds = ref<any[]>([]) // 当前勾选的科目ids
+
+// 可选科目列表赋值 和 已选科目列表赋值
+const RenderOptionalAndSubjectTree = async (type,row)=>{
   let res = undefined
   switch(type){
     case 'subject':{
@@ -377,29 +387,15 @@ const RenderOptionalSubjectTree = async (type,row)=>{
         id:item.id
       }
     })
-  }
-}
 
-// 已选科目列表赋值 __查询来源有问题  待完善
-const RenderSelectedSubjectTree = async (type,row)=>{
-  let selectedRes = undefined
-  switch(type){
-    case 'subject':{
-      selectedRes = await getSubjectSelectedDataApi(row.id)
-      break
-    }
-    case 'selectedSubject':{
-      // 
-      break
-    }
-  }
-  if(selectedRes?.code ==  200){
-    selectedTreeData.value = selectedRes.data.map(item=>{
+    selectedTreeData.value = res.data.filter(item=>{
+      return item.selectStatus === 1
+    })?.map(selectedItm=>{
       return {
-        label:item.name,
-        id:item.id
+        label:selectedItm.name,
+        id:selectedItm.id
       }
-    })
+    }) || []
   }
 }
 
@@ -420,12 +416,12 @@ const OpenAddSubjectForm = async (row,type) => {
       break
     }
   }
-  await RenderOptionalSubjectTree(type,row)
-  await RenderSelectedSubjectTree(type,row)
+  await RenderOptionalAndSubjectTree(type,row)
 
   // 可选科目的默认勾选赋值 
   let checkedKeys = selectedTreeData.value.map(item=>item?.id)
-  optionalSubjetTree.value.setCheckedKeys(checkedKeys)
+  selectedSubjectIds.value = checkedKeys
+  optionalSubjetTreeDom.value.setCheckedKeys(checkedKeys)
 
 };
 // 关闭配置科目/选科 弹窗
@@ -436,15 +432,38 @@ const CloseAddSubjectForm = () => {
 
   currentOpenType.value = ''
   currentOperationRow.value  = null
+
+  selectedSubjectIds.value = []
+  addSubjectDialogLoading.value = false
+
+
 };
 
 // 更新勾选的 可选科目
 const UpdataCheckedSubject = async (params)=>{
   console.log('当前勾选参数',params)
-  let selectedSubjectIds = params?.map(item=>{
+  selectedSubjectIds.value = params?.map(item=>{
     return item.id
   }) || []
+  selectedTreeData.value = params
+}
 
+// 删除勾选的可选科目 
+const DeleteCheckedSubject = async (param)=>{
+  const {node,id} = param
+  console.log('准备删除的id',id)
+  selectedTreeData.value = selectedTreeData.value.filter(item=>{
+    return item?.id !== id
+  })
+  selectedSubjectIds.value = selectedTreeData.value?.map(item=>{
+    return item.id
+  }) || []
+  optionalSubjetTreeDom.value.setCheckedKeys(selectedSubjectIds.value)
+}
+
+// 保存配置的年级科目
+const SaveGradeSubjectOpt = async ()=>{
+  addSubjectDialogLoading.value = true
   let res = undefined
   let addOrUpdateParams = {
       evaluationId:route.query.id,
@@ -452,49 +471,28 @@ const UpdataCheckedSubject = async (params)=>{
       selectionStatus: currentOperationRow.value.selectionStatus ? 1 : 0,
       selectionCount:currentOperationRow.value.selectionCount,
       needCount:currentOperationRow.value.needCount,
-      subjectIds: selectedSubjectIds
-    }
-  switch(currentOpenType.value){
-    case 'subject':{
-      res = await addGradeSubjectApi(addOrUpdateParams)
-      break
-    }
-    case 'selectedSubject':{
-      res = await addGradeSelectedSubjectApi(addOrUpdateParams)
-      break
+      subjectIds: selectedSubjectIds.value
     }
-  }
-  if(res?.code == 200){
-    ElMessage.success(res?.msg)
-    await GetEvaluationDataDetail()
-    await RenderSelectedSubjectTree(currentOpenType.value,currentOperationRow.value)
-  }
-}
-
-// 删除勾选的可选科目
-const DeleteCheckedSubject = async (param)=>{
-  const {node,id} = param
-  console.log('准备删除的id',id)
 
-  let res = undefined
-  switch(currentOpenType.value){
-    case 'subject':{
-      res = await deleteGradeSubjectApi(id)
-      break
-    }
-    case 'selectedSubject':{
-      res = await deleteGradeSelectedSubjectApi(id)
-      break
+  try{
+    switch(currentOpenType.value){
+      case 'subject':{
+        res = await addGradeSubjectApi(addOrUpdateParams)
+        break
+      }
+      case 'selectedSubject':{
+        res = await addGradeSelectedSubjectApi(addOrUpdateParams)
+        break
+      }
     }
-  }
+  }catch{}
+ 
   if(res?.code == 200){
     ElMessage.success(res?.msg)
-    // 重查已选科目
-    // 更新可选科目赋值
-    await RenderSelectedSubjectTree(currentOpenType.value,currentOperationRow.value )
-    // 可选科目的默认勾选赋值 
-    let checkedKeys = selectedTreeData.value.map(item=>item?.id)
-    optionalSubjetTree.value.setCheckedKeys(checkedKeys)
+    CloseAddSubjectForm()
+    await GetEvaluationDataDetail()
+  }else{
+    addSubjectDialogLoading.value = false
   }
 }
 
@@ -614,6 +612,13 @@ const SaveEvaluationData = async ()=>{
 
 }
 
+// input 输入框最大值限制
+const HandleInputBlur = (maxNum:number,row,key)=>{
+  if(row[key] > maxNum){
+    row[key] = maxNum
+  }
+}
+
 onMounted(async() => {
   console.log('组件挂载完成');
   await GetEvaluationTaskDetail()