From 80f126c25a6f75279526bc8521342b2b733a075e Mon Sep 17 00:00:00 2001 From: ywyonui Date: Sat, 13 Sep 2025 21:48:00 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=A2=9E=E5=8A=A0=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E6=9F=A5=E8=AF=A2=E5=B9=B4=E7=BA=A7=E7=8F=AD=E7=BA=A7?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=99=A8=E7=9A=84=E5=8F=82=E6=95=B0=202?= =?UTF-8?q?=E3=80=81=E8=B0=83=E6=95=B4=E6=A0=87=E5=87=86=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/BasicNjBjSelect/index.vue | 29 +- src/pages/view/routine/jc/bzList.vue | 465 ++++++++++++++---- src/pages/view/routine/jc/components/dm.vue | 29 +- .../view/routine/jc/components/dmList.vue | 29 +- src/pages/view/routine/jc/index.vue | 2 +- 5 files changed, 432 insertions(+), 122 deletions(-) diff --git a/src/components/BasicNjBjSelect/index.vue b/src/components/BasicNjBjSelect/index.vue index 17086dc..e1b991c 100644 --- a/src/components/BasicNjBjSelect/index.vue +++ b/src/components/BasicNjBjSelect/index.vue @@ -199,6 +199,9 @@ const props = withDefaults(defineProps<{ title?: string useKzTree?: boolean // 是否使用不受权限控制的接口 multiple?: boolean // 是否支持多选 + onlyConfirmChangeFlag: boolean // 确认选择时才触发 change 事件 + autoSelectedFirst: boolean // 是否自动选择第一个 + bjRequired: boolean // 班级是否是必选 }>(), { modelValue: null, defaultValue: null, @@ -209,7 +212,10 @@ const props = withDefaults(defineProps<{ disabled: false, title: '选择班级', useKzTree: false, - multiple: false + multiple: false, + onlyConfirmChangeFlag: false, + autoSelectedFirst: false, + bjRequired: false }) // Emits 定义 @@ -307,6 +313,9 @@ const onGradeRadioChange = (event: any) => { if (selectedGrade) { selectedGrades.value = [selectedGrade] selectedClasses.value = [] + if (props.autoSelectedFirst) { + selectedClasses.value = [selectedGrade.children[0]] + } } else { selectedGrades.value = [] selectedClasses.value = [] @@ -365,7 +374,16 @@ const onClassRadioChange = (event: any) => { } // 更新模型值 -const updateModelValue = () => { +const updateModelValue = (confirmFlag: boolean = false) => { + // 如果不是确认选择,且仅确认选择时才触发 change 事件 + if (!confirmFlag && props.onlyConfirmChangeFlag) { + return; + } + if (props.bjRequired && selectedClasses.value.length === 0) { + uni.showToast({ title: '请选择班级', icon: 'error' }); + return; + } + const result: TreeSelectResult = { selectedGrades: [...selectedGrades.value], selectedClasses: [...selectedClasses.value], @@ -390,7 +408,7 @@ const closeSelector = () => { // 确认选择 const confirmSelection = () => { - updateModelValue() + updateModelValue(true) closeSelector() } @@ -414,6 +432,11 @@ const loadData = async () => { if (props.defaultValue) { selectedGrades.value = props.defaultValue.selectedGrades || [] selectedClasses.value = props.defaultValue.selectedClasses || [] + } else if (props.autoSelectedFirst) { + // 默认选中第一个 + selectedGrades.value = [njList.value[0]] + selectedClasses.value = [njList.value[0].children[0]] + updateModelValue(true) } } catch (error) { console.error('加载年级班级数据失败:', error) diff --git a/src/pages/view/routine/jc/bzList.vue b/src/pages/view/routine/jc/bzList.vue index 5807644..066da59 100644 --- a/src/pages/view/routine/jc/bzList.vue +++ b/src/pages/view/routine/jc/bzList.vue @@ -1,149 +1,400 @@ diff --git a/src/pages/view/routine/jc/components/dm.vue b/src/pages/view/routine/jc/components/dm.vue index a402972..ecd6143 100644 --- a/src/pages/view/routine/jc/components/dm.vue +++ b/src/pages/view/routine/jc/components/dm.vue @@ -2,9 +2,23 @@ - 选择班级 - - + 选择班级 + ℹ️ @@ -59,7 +73,7 @@