|
@@ -71,7 +71,7 @@
|
|
|
v-for="tag in gradeOpt.subjectData"
|
|
v-for="tag in gradeOpt.subjectData"
|
|
|
:key="tag"
|
|
:key="tag"
|
|
|
closable
|
|
closable
|
|
|
- :disable-transitions="false"
|
|
|
|
|
|
|
+ :disable-transitions="true"
|
|
|
@close="HandleDeleteOpen(tag,'subject')"
|
|
@close="HandleDeleteOpen(tag,'subject')"
|
|
|
>
|
|
>
|
|
|
{{ tag.name }}
|
|
{{ tag.name }}
|
|
@@ -96,7 +96,7 @@
|
|
|
v-for="tag in gradeOpt.selectSubjectData"
|
|
v-for="tag in gradeOpt.selectSubjectData"
|
|
|
:key="tag"
|
|
:key="tag"
|
|
|
closable
|
|
closable
|
|
|
- :disable-transitions="false"
|
|
|
|
|
|
|
+ :disable-transitions="true"
|
|
|
@close="HandleDeleteOpen(tag,'selectedSubject')"
|
|
@close="HandleDeleteOpen(tag,'selectedSubject')"
|
|
|
>
|
|
>
|
|
|
{{ tag.name }}
|
|
{{ tag.name }}
|
|
@@ -172,7 +172,8 @@
|
|
|
<div class="subject_all_list">
|
|
<div class="subject_all_list">
|
|
|
<div class="description">
|
|
<div class="description">
|
|
|
<span class="subject_desc">可选科目</span>
|
|
<span class="subject_desc">可选科目</span>
|
|
|
- <span class="operation">新增科目</span>
|
|
|
|
|
|
|
+ <!-- 添加科目时候显示 -->
|
|
|
|
|
+ <span v-if="currentOpenType == 'subject'" class="operation" @click="HandleAddCustomSubject">+ 新增科目</span>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="tree">
|
|
<div class="tree">
|
|
@@ -180,8 +181,14 @@
|
|
|
v-model:treeRef="optionalSubjetTreeDom"
|
|
v-model:treeRef="optionalSubjetTreeDom"
|
|
|
:defaultTreeData="allTreeData"
|
|
:defaultTreeData="allTreeData"
|
|
|
:showCheckBox="true"
|
|
:showCheckBox="true"
|
|
|
- operation="none"
|
|
|
|
|
|
|
+ :operation="currentOpenType == 'subject' ? 'all' : ''"
|
|
|
|
|
+ operationFlagKey="custom"
|
|
|
|
|
+ v-model:editItemKey="optionalTreeEditItemKey"
|
|
|
|
|
+ v-model:editTaskName="optionalTreeEditTaskName"
|
|
|
|
|
+ :showAddOperation="false"
|
|
|
@updateSelectedTreeNode="UpdataCheckedSubject"
|
|
@updateSelectedTreeNode="UpdataCheckedSubject"
|
|
|
|
|
+ @updateTreeName="HandleSaveCustomSubject"
|
|
|
|
|
+ @deleteTreeNode="DeleteCustomSubject"
|
|
|
>
|
|
>
|
|
|
</TreeList>
|
|
</TreeList>
|
|
|
</div>
|
|
</div>
|
|
@@ -231,7 +238,7 @@ import {
|
|
|
addGradeSubjectApi,addGradeSelectedSubjectApi,
|
|
addGradeSubjectApi,addGradeSelectedSubjectApi,
|
|
|
deleteGradeSubjectApi,deleteGradeSelectedSubjectApi,
|
|
deleteGradeSubjectApi,deleteGradeSelectedSubjectApi,
|
|
|
addCustomSubjectApi,editCustomSubjectApi,editGradeApi,
|
|
addCustomSubjectApi,editCustomSubjectApi,editGradeApi,
|
|
|
- deleteGradeApi,
|
|
|
|
|
|
|
+ deleteGradeApi,deleteCustomSubjectApi,
|
|
|
getGradeListApi,getSubjectDataApi,getSubjectSelectedDataApi,
|
|
getGradeListApi,getSubjectDataApi,getSubjectSelectedDataApi,
|
|
|
saveEvaluationDataDetailApi
|
|
saveEvaluationDataDetailApi
|
|
|
} from '@/api/step1Component.ts'
|
|
} from '@/api/step1Component.ts'
|
|
@@ -256,6 +263,11 @@ interface gradeOptItm {
|
|
|
selectedClassData: subjectOrClassDataItm[],
|
|
selectedClassData: subjectOrClassDataItm[],
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+interface treeDataItm {
|
|
|
|
|
+ id:number|string,
|
|
|
|
|
+ label:string,
|
|
|
|
|
+ custom?:number, // 0 非自定义 1 自定义
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
const route = useRoute();
|
|
const route = useRoute();
|
|
|
|
|
|
|
@@ -360,13 +372,14 @@ const EditSelectedGrade = async()=>{
|
|
|
const optionalSubjetTreeDom = ref() //可选列表Tree Dom
|
|
const optionalSubjetTreeDom = ref() //可选列表Tree Dom
|
|
|
const addSubjectDialogVisible = ref(false);
|
|
const addSubjectDialogVisible = ref(false);
|
|
|
const addSubjectDialogLoading = ref(false);
|
|
const addSubjectDialogLoading = ref(false);
|
|
|
-const subjectTitle = ref('配置科目/选科');
|
|
|
|
|
|
|
+const subjectTitle = ref('');
|
|
|
const currentOpenType = ref('') //当前打开的弹窗类型 subject 、selectedSubject ,grade ,
|
|
const currentOpenType = ref('') //当前打开的弹窗类型 subject 、selectedSubject ,grade ,
|
|
|
const currentOperationRow = ref() //当前操作的行
|
|
const currentOperationRow = ref() //当前操作的行
|
|
|
-const selectedTreeData = ref([]) //已选列表
|
|
|
|
|
-const allTreeData = ref([]) //可选列表
|
|
|
|
|
|
|
+const selectedTreeData = ref<treeDataItm[]>([]) //已选列表
|
|
|
|
|
+const allTreeData = ref<treeDataItm[]>([]) //可选列表
|
|
|
const selectedSubjectIds = ref<any[]>([]) // 当前勾选的科目ids
|
|
const selectedSubjectIds = ref<any[]>([]) // 当前勾选的科目ids
|
|
|
-
|
|
|
|
|
|
|
+const optionalTreeEditItemKey = ref('') //当前编辑的id
|
|
|
|
|
+const optionalTreeEditTaskName = ref('') // 当前编辑的名称
|
|
|
// 可选科目列表赋值 和 已选科目列表赋值
|
|
// 可选科目列表赋值 和 已选科目列表赋值
|
|
|
const RenderOptionalAndSubjectTree = async (type,row)=>{
|
|
const RenderOptionalAndSubjectTree = async (type,row)=>{
|
|
|
let res = undefined
|
|
let res = undefined
|
|
@@ -384,7 +397,8 @@ const RenderOptionalAndSubjectTree = async (type,row)=>{
|
|
|
allTreeData.value = res.data.map(item=>{
|
|
allTreeData.value = res.data.map(item=>{
|
|
|
return {
|
|
return {
|
|
|
label:item.name,
|
|
label:item.name,
|
|
|
- id:item.id
|
|
|
|
|
|
|
+ id:item.id,
|
|
|
|
|
+ custom:Number(item.detailType)===12 ? 1 : 0 // detailType===12 自定义科目
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
|
|
|
|
@@ -461,6 +475,64 @@ const DeleteCheckedSubject = async (param)=>{
|
|
|
optionalSubjetTreeDom.value.setCheckedKeys(selectedSubjectIds.value)
|
|
optionalSubjetTreeDom.value.setCheckedKeys(selectedSubjectIds.value)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+// 新增自定义科目,显示可编辑输入框
|
|
|
|
|
+const HandleAddCustomSubject = () => {
|
|
|
|
|
+ if(optionalTreeEditItemKey.value) return
|
|
|
|
|
+
|
|
|
|
|
+ let length = allTreeData.value.length
|
|
|
|
|
+ let id = allTreeData.value[length - 1]?.id + `custom_${length}`
|
|
|
|
|
+ allTreeData.value.push({
|
|
|
|
|
+ label:`学科名称`,
|
|
|
|
|
+ id,
|
|
|
|
|
+ custom:1
|
|
|
|
|
+ })
|
|
|
|
|
+ // 把状态变成编辑状态
|
|
|
|
|
+ optionalTreeEditItemKey.value = id
|
|
|
|
|
+ optionalTreeEditTaskName.value = '学科名称'
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 保存新增的自定义年级 科目
|
|
|
|
|
+const HandleSaveCustomSubject = async (customSubject: any) => {
|
|
|
|
|
+ const {id,label} = customSubject
|
|
|
|
|
+ let res = undefined
|
|
|
|
|
+ let params = {
|
|
|
|
|
+ evaluationGradeId: currentOperationRow.value.id,
|
|
|
|
|
+ name: label
|
|
|
|
|
+ }
|
|
|
|
|
+ try{
|
|
|
|
|
+ if(id.includes('custom_')){
|
|
|
|
|
+ // 首次新增 自定义
|
|
|
|
|
+ res = await addCustomSubjectApi(params)
|
|
|
|
|
+ }else{
|
|
|
|
|
+ // 修改 自定义
|
|
|
|
|
+ res = await editCustomSubjectApi({...params,id})
|
|
|
|
|
+ }
|
|
|
|
|
+ }catch{}
|
|
|
|
|
+
|
|
|
|
|
+ if(res?.code == 200){
|
|
|
|
|
+ optionalTreeEditItemKey.value = ''
|
|
|
|
|
+ ElMessage.success(res?.msg)
|
|
|
|
|
+ // 重新查询 科目 / 选科 数据
|
|
|
|
|
+ await RenderOptionalAndSubjectTree(currentOpenType.value,currentOperationRow.value)
|
|
|
|
|
+ }else{
|
|
|
|
|
+ optionalTreeEditItemKey.value = id
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 删除自定义年级科目
|
|
|
|
|
+const DeleteCustomSubject = async (params)=>{
|
|
|
|
|
+ const {node,id} = params
|
|
|
|
|
+
|
|
|
|
|
+ let res = await deleteCustomSubjectApi(id)
|
|
|
|
|
+ if(res?.code == 200){
|
|
|
|
|
+ ElMessage.success(res?.msg)
|
|
|
|
|
+ // 重新查询 可选科目
|
|
|
|
|
+ await RenderOptionalAndSubjectTree(currentOpenType.value,currentOperationRow.value)
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
// 保存配置的年级科目
|
|
// 保存配置的年级科目
|
|
|
const SaveGradeSubjectOpt = async ()=>{
|
|
const SaveGradeSubjectOpt = async ()=>{
|
|
|
addSubjectDialogLoading.value = true
|
|
addSubjectDialogLoading.value = true
|
|
@@ -729,6 +801,7 @@ onMounted(async() => {
|
|
|
font-weight: 600;
|
|
font-weight: 600;
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
|
color: #2E64FA;
|
|
color: #2E64FA;
|
|
|
|
|
+ cursor: pointer;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|