fix: preserve selected publishing department across create flow

This commit is contained in:
Your Name 2026-03-30 18:28:32 +08:00
parent 821c3bf22c
commit f0387a6a65
2 changed files with 35 additions and 3 deletions

View File

@ -645,6 +645,7 @@ import { useConfigStore } from '@/stores/config'
const router = useRouter()
const route = useRoute()
const authStore = useAuthStore()
const TASK_CREATE_PUBLISHER_DEPT_KEY = 'task_create_publisher_dept_id'
// 编辑模式
const editMode = ref(false)
@ -869,6 +870,17 @@ const initializePublishingDept = (preferredDeptId?: number) => {
selectedPublishingDeptId.value = primaryPublishingDept?.deptId || departments[0].deptId
}
const getPreferredPublishingDeptId = () => {
const routeDeptId = route.query.publisherDeptId ? Number(route.query.publisherDeptId) : undefined
if (routeDeptId) return routeDeptId
const storedDeptId = sessionStorage.getItem(TASK_CREATE_PUBLISHER_DEPT_KEY)
if (!storedDeptId) return undefined
const parsedDeptId = Number(storedDeptId)
return Number.isNaN(parsedDeptId) ? undefined : parsedDeptId
}
// 新条码输入框
const newBarcodeInput = ref('')
@ -2847,8 +2859,7 @@ onMounted(async () => {
try {
await authStore.fetchUserInfo()
console.log('用户信息已刷新:', authStore.userInfo)
const preferredDeptId = route.query.publisherDeptId ? Number(route.query.publisherDeptId) : undefined
initializePublishingDept(preferredDeptId)
initializePublishingDept(getPreferredPublishingDeptId())
} catch (error) {
console.error('刷新用户信息失败:', error)
}
@ -2888,12 +2899,17 @@ watch(availablePublishingDepartments, (departments) => {
}
if (!selectedPublishingDeptId.value || !departments.some(dept => dept.deptId === selectedPublishingDeptId.value)) {
initializePublishingDept()
initializePublishingDept(getPreferredPublishingDeptId())
}
}, { immediate: true })
watch(selectedPublishingDeptId, async (deptId, oldDeptId) => {
if (deptId === oldDeptId) return
if (deptId) {
sessionStorage.setItem(TASK_CREATE_PUBLISHER_DEPT_KEY, String(deptId))
} else {
sessionStorage.removeItem(TASK_CREATE_PUBLISHER_DEPT_KEY)
}
await loadTeamScore()
})

View File

@ -2608,6 +2608,7 @@ const userDeptName = ref<string>('')
const userDeptType = ref<string>('')
const exportLoading = ref(false) // 导出加载状态
const withdrawingTaskId = ref<number | null>(null) // 正在撤回的任务ID
const TASK_CREATE_PUBLISHER_DEPT_KEY = 'task_create_publisher_dept_id'
// 获取当前有效的部门类型(根据选择的视角)
const effectiveDeptType = computed(() => {
@ -4827,13 +4828,28 @@ const handleMonthChange = () => {
// 发起任务
const handleCreateTask = () => {
const persistPublisherDeptId = (deptId?: number | null) => {
if (deptId) {
sessionStorage.setItem(TASK_CREATE_PUBLISHER_DEPT_KEY, String(deptId))
} else {
sessionStorage.removeItem(TASK_CREATE_PUBLISHER_DEPT_KEY)
}
}
if (currentDeptView.value !== undefined && (effectiveDeptType.value === 'demand' || effectiveDeptType.value === 'primary_demand')) {
persistPublisherDeptId(currentDeptView.value)
router.push({
path: '/tasks/create',
query: { publisherDeptId: String(currentDeptView.value) }
})
return
}
if (currentDeptView.value === undefined && (userDeptType.value === 'demand' || userDeptType.value === 'primary_demand')) {
persistPublisherDeptId(userDeptId.value)
} else {
persistPublisherDeptId(undefined)
}
router.push('/tasks/create')
}