Files
familyactivity-front/src/components/BschSubjectSelect.vue
T
2026-09-20 18:00:18 +08:00

37 lines
1.0 KiB
Vue

<template>
<Select v-model="innerId" @on-change="handleChange" v-bind="$attrs">
<Option v-for="item in stageSubjects" :key="item.k" :value="item.k">
{{ item.v }}
</Option>
</Select>
</template>
<script lang="ts" setup>
import { useDefaultStore } from '@/store'
const emit = defineEmits<{
'on-change': [stage: number, subject: string]
}>()
const store = useDefaultStore()
const stageSubjects = computed(() => store.getStageSubjects)
const innerId = ref<number | null>(null)
const cacheKey = 'bsch.learnmanage.cur_subject_id';
onMounted(async () => {
await nextTick()
if (!stageSubjects.value.length) return
const cached = sessionStorage.getItem(cacheKey)
const id = cached ? Number(cached) : stageSubjects.value[0]?.k;
if (id != null) innerId.value = id
handleChange(id)
})
function handleChange(val: number) {
const find = stageSubjects.value.find((i: any) => i.k === val)
if (!find) return
sessionStorage.setItem(cacheKey, String(val))
emit('on-change', find.stage, find.code)
}
</script>