fix: preserve selected publishing department across create flow
This commit is contained in:
parent
821c3bf22c
commit
f0387a6a65
@ -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()
|
||||
})
|
||||
|
||||
|
||||
@ -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')
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user