|
@@ -19,14 +19,14 @@
|
|
|
check-strictly
|
|
check-strictly
|
|
|
default-expand-all
|
|
default-expand-all
|
|
|
placeholder="请选择课程父级类型"
|
|
placeholder="请选择课程父级类型"
|
|
|
|
|
+ @change="handleParentChange"
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="课程类型节点" prop="ctTypeNode">
|
|
<el-form-item label="课程类型节点" prop="ctTypeNode">
|
|
|
- <el-segmented v-model="formData.ctTypeNode" :options="[
|
|
|
|
|
- { label: '年级', value: '0' },
|
|
|
|
|
- { label: '通识课', value: '1' },
|
|
|
|
|
- { label: '实操课', value: '2' },
|
|
|
|
|
- ]" />
|
|
|
|
|
|
|
+ <el-segmented
|
|
|
|
|
+ v-model="formData.ctTypeNode"
|
|
|
|
|
+ :options="segmentedOptions"
|
|
|
|
|
+ />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="课程类型名称" prop="ctType">
|
|
<el-form-item label="课程类型名称" prop="ctType">
|
|
|
<el-input v-model="formData.ctType" placeholder="请输入课程类型名称" />
|
|
<el-input v-model="formData.ctType" placeholder="请输入课程类型名称" />
|
|
@@ -85,6 +85,33 @@ const formRules = reactive({
|
|
|
const formRef = ref() // 表单 Ref
|
|
const formRef = ref() // 表单 Ref
|
|
|
const courseTypeTree = ref() // 树形结构
|
|
const courseTypeTree = ref() // 树形结构
|
|
|
|
|
|
|
|
|
|
+// 计算属性:判断父级ID是否为根节点(0)
|
|
|
|
|
+const isRootParent = computed(() => {
|
|
|
|
|
+ return formData.value.ctParentId === 0 || formData.value.ctParentId === '0'
|
|
|
|
|
+})
|
|
|
|
|
+
|
|
|
|
|
+// 分段控件选项(根据父级ID动态配置禁用状态)
|
|
|
|
|
+const segmentedOptions = computed(() => {
|
|
|
|
|
+ return [
|
|
|
|
|
+ { label: '年级', value: '0', disabled: !isRootParent.value }, // 非根节点时禁用年级
|
|
|
|
|
+ { label: '通识课', value: '1', disabled: isRootParent.value }, // 根节点时禁用通识课
|
|
|
|
|
+ { label: '实操课', value: '2', disabled: isRootParent.value }, // 根节点时禁用实操课
|
|
|
|
|
+ ]
|
|
|
|
|
+})
|
|
|
|
|
+
|
|
|
|
|
+// 处理父级类型变更
|
|
|
|
|
+const handleParentChange = () => {
|
|
|
|
|
+ if (isRootParent.value) {
|
|
|
|
|
+ // 当父级是根节点时,强制设置为年级类型
|
|
|
|
|
+ formData.value.ctTypeNode = '0'
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 当父级不是根节点时,如果当前类型是年级,则改为通识课
|
|
|
|
|
+ if (formData.value.ctTypeNode === '0' || formData.value.ctTypeNode === 0) {
|
|
|
|
|
+ formData.value.ctTypeNode = '1'
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
/** 打开弹窗 */
|
|
/** 打开弹窗 */
|
|
|
const open = async (type: string, id?: number, parentId?: number) => {
|
|
const open = async (type: string, id?: number, parentId?: number) => {
|
|
|
dialogVisible.value = true
|
|
dialogVisible.value = true
|
|
@@ -93,12 +120,24 @@ const open = async (type: string, id?: number, parentId?: number) => {
|
|
|
resetForm()
|
|
resetForm()
|
|
|
if (parentId) {
|
|
if (parentId) {
|
|
|
formData.value.ctParentId = parentId
|
|
formData.value.ctParentId = parentId
|
|
|
|
|
+ // 根据父级ID设置默认的类型节点
|
|
|
|
|
+ if (parentId === 0 || parentId === '0') {
|
|
|
|
|
+ formData.value.ctTypeNode = '0' // 根节点时默认年级
|
|
|
|
|
+ } else {
|
|
|
|
|
+ formData.value.ctTypeNode = '1' // 非根节点时默认通识课
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
// 修改时,设置数据
|
|
// 修改时,设置数据
|
|
|
if (id) {
|
|
if (id) {
|
|
|
formLoading.value = true
|
|
formLoading.value = true
|
|
|
try {
|
|
try {
|
|
|
formData.value = await CourseTypeApi.getCourseType(id)
|
|
formData.value = await CourseTypeApi.getCourseType(id)
|
|
|
|
|
+ // 确保类型与父级ID匹配
|
|
|
|
|
+ if (isRootParent.value && formData.value.ctTypeNode !== '0') {
|
|
|
|
|
+ formData.value.ctTypeNode = '0'
|
|
|
|
|
+ } else if (!isRootParent.value && formData.value.ctTypeNode === '0') {
|
|
|
|
|
+ formData.value.ctTypeNode = '1'
|
|
|
|
|
+ }
|
|
|
} finally {
|
|
} finally {
|
|
|
formLoading.value = false
|
|
formLoading.value = false
|
|
|
}
|
|
}
|