import { ref, computed } from 'vue' export type RoleType = 'admin' | 'sales' | 'contract' /** * 角色视角切换 Hook * 根据当前角色控制 UI 元素的可见性 * * - admin: 产品管理员 — 可新增/编辑/删除,可查看全部产品(含下架) * - sales: 销售员 — 仅查看,默认过滤上架产品,隐藏下架选项 * - contract: 合同管理员 — 仅查看,隐藏编辑/删除按钮 */ export function useRoleBasedVisibility(initialRole: RoleType = 'admin') { const currentRole = ref(initialRole) const isAdmin = computed(() => currentRole.value === 'admin') const showAddBtn = computed(() => currentRole.value === 'admin') const showEditBtn = computed(() => currentRole.value === 'admin') const showDeleteBtn = computed(() => currentRole.value === 'admin') const showOffShelfOption = computed(() => currentRole.value === 'admin') function setRole(role: RoleType) { currentRole.value = role } return { currentRole, isAdmin, showAddBtn, showEditBtn, showDeleteBtn, showOffShelfOption, setRole, } }