diff --git a/src/views/CaseReviewView.vue b/src/views/CaseReviewView.vue index bd1b4b4e..7c39f76c 100644 --- a/src/views/CaseReviewView.vue +++ b/src/views/CaseReviewView.vue @@ -12,7 +12,22 @@
- + + + 查询 重置
@@ -269,6 +284,7 @@ import { type CaseListItem, type CasePublishStatus } from '@/api/cases' +import { fetchMyDepartments, type DepartmentOption } from '@/api/users' import { useAppStore } from '@/stores/app' type ReviewCaseType = 'traditional' | 'teaching' @@ -316,8 +332,10 @@ const appStore = useAppStore() const loading = ref(false) const publishing = ref(false) const detailLoading = ref(false) +const loadingDepartments = ref(false) const detailDrawerVisible = ref(false) const cases = ref([]) +const departmentOptions = ref([]) const detailCase = ref(null) const caseDetail = ref(null) const detailForm = reactive({ @@ -396,6 +414,27 @@ function resetFilters() { loadReviewCases() } +async function loadDepartmentOptions() { + if (!appStore.token || loadingDepartments.value || departmentOptions.value.length) { + return + } + + try { + loadingDepartments.value = true + departmentOptions.value = await fetchMyDepartments(appStore.token) + } catch (error) { + ElMessage.error(error instanceof Error ? error.message : '获取科室列表失败') + } finally { + loadingDepartments.value = false + } +} + +function handleDepartmentVisibleChange(visible: boolean) { + if (visible) { + loadDepartmentOptions() + } +} + async function openDetailDrawer(row: CaseListItem) { if (!appStore.token) { ElMessage.warning('缺少登录信息,请重新登录') @@ -871,7 +910,10 @@ function formatDateTime(value: string) { return value.replace('T', ' ').slice(0, 19) } -onMounted(loadReviewCases) +onMounted(() => { + loadReviewCases() + loadDepartmentOptions() +})