fix(taskhall): 修复接单负责人可接任务附件可见性
This commit is contained in:
parent
34ead8be3d
commit
0ddbadfd7c
@ -2557,16 +2557,22 @@ const configStore = useConfigStore()
|
||||
// 标签页
|
||||
const activeTab = ref('available')
|
||||
|
||||
// 是否为部门负责人(从localStorage获取用户信息)
|
||||
const isDepartmentLeader = computed(() => {
|
||||
const parseUserInfo = () => {
|
||||
try {
|
||||
const userStr = localStorage.getItem('userInfo')
|
||||
if (!userStr) return false
|
||||
const user = JSON.parse(userStr)
|
||||
return user?.isDepartmentLeader === 1 || user?.role === 'dept_leader' || user?.role === 'admin'
|
||||
if (!userStr) return {}
|
||||
return JSON.parse(userStr)
|
||||
} catch {
|
||||
return false
|
||||
return {}
|
||||
}
|
||||
}
|
||||
|
||||
const currentUserInfo = ref<any>(parseUserInfo())
|
||||
|
||||
// 是否为部门负责人
|
||||
const isDepartmentLeader = computed(() => {
|
||||
const user = currentUserInfo.value || {}
|
||||
return user?.isDepartmentLeader === 1 || user?.isDepartmentLeader === true || user?.role === 'dept_leader' || user?.role === 'admin'
|
||||
})
|
||||
|
||||
// 部门视角切换功能(用于管理多个部门的负责人)
|
||||
@ -2600,7 +2606,7 @@ const effectiveDeptId = computed(() => {
|
||||
|
||||
// 计算是否有导出权限(部门负责人或管理员)
|
||||
const canExportTaskHall = computed(() => {
|
||||
const userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}')
|
||||
const userInfo = currentUserInfo.value || {}
|
||||
if (!userInfo || !userInfo.id) return false
|
||||
|
||||
// 管理员可以导出
|
||||
@ -2624,35 +2630,42 @@ const canExportTaskHall = computed(() => {
|
||||
// 初始化部门视角数据
|
||||
const initDeptViewData = async () => {
|
||||
try {
|
||||
const userStr = localStorage.getItem('userInfo')
|
||||
let user = userStr ? JSON.parse(userStr) : null
|
||||
|
||||
// 如果用户信息中没有 managedDepartments 字段,则调用 API 刷新
|
||||
if (user && !user.managedDepartments) {
|
||||
console.log('用户信息中没有 managedDepartments,刷新用户信息...')
|
||||
try {
|
||||
const response = await authApi.getUserInfo()
|
||||
if (response.data) {
|
||||
user = response.data
|
||||
localStorage.setItem('userInfo', JSON.stringify(user))
|
||||
console.log('用户信息已刷新:', user)
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn('刷新用户信息失败:', e)
|
||||
let user: any = parseUserInfo()
|
||||
|
||||
// 每次进入任务大厅都刷新一次用户信息,避免本地缓存过期导致权限判断错误
|
||||
try {
|
||||
const response = await authApi.getUserInfo()
|
||||
if (response.data) {
|
||||
user = response.data
|
||||
localStorage.setItem('userInfo', JSON.stringify(user))
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn('刷新用户信息失败,回退本地缓存:', e)
|
||||
}
|
||||
|
||||
if (user) {
|
||||
|
||||
currentUserInfo.value = user || {}
|
||||
|
||||
if (user && user.id) {
|
||||
userDeptId.value = user.deptId
|
||||
userDeptName.value = user.deptName || '我的部门'
|
||||
userDeptType.value = user.deptType || 'demand'
|
||||
|
||||
// 优先使用后端返回的部门类型;缺失时从部门列表回填
|
||||
let resolvedDeptType = user.deptType
|
||||
if (!resolvedDeptType && Array.isArray(user.managedDepartments) && user.deptId) {
|
||||
const selfDept = user.managedDepartments.find((dept: ManagedDepartment) => dept.deptId === user.deptId)
|
||||
if (selfDept?.deptType) {
|
||||
resolvedDeptType = selfDept.deptType
|
||||
}
|
||||
}
|
||||
userDeptType.value = resolvedDeptType || 'demand'
|
||||
|
||||
// 获取用户管理的部门列表
|
||||
if (user.managedDepartments && Array.isArray(user.managedDepartments)) {
|
||||
managedDepartments.value = user.managedDepartments.filter(
|
||||
(dept: ManagedDepartment) => dept.deptId !== user.deptId // 排除用户自己所属的部门
|
||||
)
|
||||
console.log('用户管理的部门:', managedDepartments.value)
|
||||
} else {
|
||||
managedDepartments.value = []
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
@ -3415,7 +3428,7 @@ const isHighScoreTask = (task: TaskOrSubTask) => {
|
||||
// 判断是否可以下载附件
|
||||
const canDownloadAttachment = (task: TaskOrSubTask) => {
|
||||
// 管理员可下载
|
||||
const userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}')
|
||||
const userInfo = currentUserInfo.value || {}
|
||||
if (userInfo.isAdmin === 1 || userInfo.isAdmin === true) {
|
||||
return true
|
||||
}
|
||||
@ -3438,12 +3451,27 @@ const parseAttachmentUrls = (attachmentUrl?: string) => {
|
||||
|
||||
// 可接任务卡片:接单部门负责人可提前查看附件信息
|
||||
const canViewAvailableTaskAttachmentInfo = computed(() => {
|
||||
const userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}')
|
||||
const userInfo = currentUserInfo.value || {}
|
||||
const isAdmin = userInfo.isAdmin === 1 || userInfo.isAdmin === true
|
||||
if (isAdmin) {
|
||||
return true
|
||||
}
|
||||
return isDepartmentLeader.value && effectiveDeptType.value === 'receiving'
|
||||
|
||||
if (!isDepartmentLeader.value) {
|
||||
return false
|
||||
}
|
||||
|
||||
// 当前切换部门为接单部门
|
||||
if (effectiveDeptType.value === 'receiving') {
|
||||
return true
|
||||
}
|
||||
|
||||
// 未切换视角时,用户自身部门为接单部门
|
||||
if (currentDeptView.value === undefined && userDeptType.value === 'receiving') {
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
})
|
||||
|
||||
// 加载配置数据(从全局store加载)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user