|
|
@@ -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()
|