Просмотр исходного кода

优化推广账号展示逻辑

wilhelm wong 2 месяцев назад
Родитель
Сommit
a386ed197c
2 измененных файлов с 76 добавлено и 13 удалено
  1. 39 7
      src/views/DomainView.vue
  2. 37 6
      src/views/TeamConfigView.vue

+ 39 - 7
src/views/DomainView.vue

@@ -108,11 +108,19 @@ const fetchData = async (page = 0) => {
       await loadAllTeamMembers()
     } else {
       // 其他角色使用原有接口
+      let queryTeamId = searchForm.value.teamId || currentTeamId.value
+      
+      // 推广员只能看到绑定给自己的域名
+      if (isPromoter.value) {
+        // 推广员查询时,需要传递自己的用户ID来过滤域名
+        queryTeamId = currentTeamId.value
+      }
+      
       const result = await listTeamDomains(
         page,
         tableData.value.meta?.size || 20,
         undefined,
-        searchForm.value.teamId || currentTeamId.value,
+        queryTeamId,
         searchForm.value.domain || undefined
       )
       tableData.value = {
@@ -145,8 +153,8 @@ const fetchData = async (page = 0) => {
       }
     }
     
-    // 为所有用户加载团队成员数据
-    if (!isAdmin.value) {
+    // 为所有用户加载团队成员数据(推广员除外,因为他们不需要看到绑定信息)
+    if (!isAdmin.value && !isPromoter.value) {
       // 直接请求团队成员接口,不依赖teamId
       await fetchTeamMembersForCurrentUser()
     }
@@ -496,8 +504,22 @@ const fetchTeamMembers = async (teamId) => {
 const fetchTeamMembersForCurrentUser = async () => {
   try {
     console.log('正在获取当前用户的团队成员数据')
-    const response = await listMembers(0, 100)
-    teamMembers.value = response.content || []
+    
+    if (isPromoter.value) {
+      // 推广员只获取自己的信息
+      const currentUserId = userStore.userInfo?.id
+      if (currentUserId) {
+        const response = await listMembers(0, 100, undefined, undefined, currentUserId)
+        teamMembers.value = response.content || []
+      } else {
+        teamMembers.value = []
+      }
+    } else {
+      // 队长和管理员获取所有团队成员
+      const response = await listMembers(0, 100)
+      teamMembers.value = response.content || []
+    }
+    
     console.log('获取到的团队成员数据:', teamMembers.value)
   } catch (error) {
     console.error('获取团队成员失败:', error)
@@ -532,7 +554,11 @@ const loadAllTeamMembers = async () => {
 const handleTeamChange = async (event) => {
   const teamId = event.value
   domainModel.teamMemberId = null
-  await fetchTeamMembers(teamId)
+  
+  // 推广员不需要获取团队成员数据,因为他们不显示绑定信息
+  if (!isPromoter.value) {
+    await fetchTeamMembers(teamId)
+  }
 }
 
 // 获取团队名称
@@ -544,6 +570,11 @@ const getTeamName = (teamId) => {
 
 // 获取绑定用户名
 const getBoundUserName = (domain) => {
+  // 推广员只能看到自己的域名,不显示绑定信息
+  if (isPromoter.value) {
+    return '我的域名'
+  }
+  
   if (domain.teamMemberId) {
     // 如果绑定到个人,从团队成员列表中查找
     // 确保类型匹配(字符串和数字)
@@ -738,7 +769,8 @@ onMounted(() => {
               </div>
             </template>
           </Column>
-          <Column field="boundUser" header="绑定用户" style="min-width: 150px" headerClass="font-bold">
+          <!-- 推广员不显示绑定用户列,因为他们只能看到自己的域名 -->
+          <Column v-if="!isPromoter" field="boundUser" header="绑定用户" style="min-width: 150px" headerClass="font-bold">
             <template #body="slotProps">
               <span class="bound-user-text">
                 {{ getBoundUserName(slotProps.data) }}

+ 37 - 6
src/views/TeamConfigView.vue

@@ -77,13 +77,13 @@ const searchForm = ref({
 // 计算当前用户的团队ID
 const currentTeamId = computed(() => {
   if (isAdmin.value) {
-    // 管理员可以选择团队,这里先返回null,在创建/编辑时手动指定
+    // 管理员:在创建/编辑时手动指定团队ID,这里返回null
     return null
   } else if (isTeam.value) {
-    // 队长从team表获取teamId
+    // 队长:从userInfo获取teamId
     return userStore.userInfo?.teamId
   } else if (isPromoter.value) {
-    // 推广员从team-members表获取teamId
+    // 推广员:从userInfo获取teamId
     return userStore.userInfo?.teamId
   }
   return null
@@ -97,12 +97,23 @@ const canView = computed(() => isAdmin.value || isTeam.value || isPromoter.value
 
 const fetchData = async (page = 0) => {
   try {
+    // 确定要查询的团队ID
+    let queryTeamId = undefined
+    
+    if (isAdmin.value) {
+      // 管理员:优先使用搜索表单中的团队ID,如果没有选择则查询所有团队
+      queryTeamId = searchForm.value.teamId || undefined
+    } else {
+      // 非管理员:使用当前用户的团队ID
+      queryTeamId = currentTeamId.value
+    }
+    
     const result = await listTeamConfig(
       page,
       tableData.value.meta.size,
       searchForm.value.name || undefined,
       searchForm.value.type || undefined,
-      searchForm.value.teamId || currentTeamId.value
+      queryTeamId
     )
     tableData.value = result || {
       data: [],
@@ -185,7 +196,17 @@ const onEdit = async (config = null) => {
     isEditing.value = true
     selectedConfig.value = config
     try {
-      const detail = await getTeamConfigByName(config.name, currentTeamId.value)
+      // 确定要查询的团队ID
+      let queryTeamId = undefined
+      if (isAdmin.value) {
+        // 管理员:使用配置本身的teamId
+        queryTeamId = config.teamId
+      } else {
+        // 非管理员:使用当前用户的团队ID
+        queryTeamId = currentTeamId.value
+      }
+      
+      const detail = await getTeamConfigByName(config.name, queryTeamId)
 
       // 填充表单数据
       configModel.name = detail.name
@@ -383,7 +404,17 @@ const onDelete = async (config) => {
     },
     accept: async () => {
       try {
-        await deleteTeamConfig(config.name, currentTeamId.value)
+        // 确定要删除的团队ID
+        let deleteTeamId = undefined
+        if (isAdmin.value) {
+          // 管理员:使用配置本身的teamId
+          deleteTeamId = config.teamId
+        } else {
+          // 非管理员:使用当前用户的团队ID
+          deleteTeamId = currentTeamId.value
+        }
+        
+        await deleteTeamConfig(config.name, deleteTeamId)
         toast.add({ severity: 'success', summary: '成功', detail: '删除配置成功', life: 3000 })
         refreshData()
       } catch (error) {