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

更新收入统计功能,修改API参数以支持按用户ID获取数据,并移除不再使用的团队数据处理逻辑,优化图表渲染逻辑以提升用户体验。

wuyi 2 месяцев назад
Родитель
Сommit
12003a4991
2 измененных файлов с 18 добавлено и 28 удалено
  1. 2 2
      src/services/api.js
  2. 16 26
      src/views/DashboardView.vue

+ 2 - 2
src/services/api.js

@@ -195,11 +195,11 @@ export const hardDeleteIncome = async (id) => {
 }
 
 // 获取收入统计数据
-export const getIncomeStatistics = async (startDate, endDate, teamId) => {
+export const getIncomeStatistics = async (startDate, endDate, userId) => {
   const params = {}
   if (startDate) params.startDate = startDate
   if (endDate) params.endDate = endDate
-  if (teamId) params.teamId = teamId
+  if (userId) params.userId = userId
 
   const response = await api.get('/income/statistics/summary', { params })
   return response.data

+ 16 - 26
src/views/DashboardView.vue

@@ -118,15 +118,6 @@ const teamOptions = computed(() => {
   ]
 })
 
-// 获取选中团队的图表数据
-const selectedTeamChartData = computed(() => {
-  if (!incomeStats.value || !selectedChartTeamId.value) {
-    return null
-  }
-
-  const teamData = incomeStats.value.teams.find((team) => team.teamId === selectedChartTeamId.value)
-  return teamData || null
-})
 
 // 格式化金额,保留2位小数
 const formatAmount = (amount) => {
@@ -196,9 +187,18 @@ const loadIncomeStats = async () => {
   try {
     loading.value = true
     const { startDate, endDate } = getDateRange()
-    let params = { startDate, endDate }
+    
+    // 如果是 admin 角色且选择了特定团队,传递 userId 参数
+    let userId = null
+    if (isAdmin.value && selectedChartTeamId.value) {
+      // 从团队列表中找到对应的团队,获取其 userId
+      const selectedTeam = teamStore.teams.find(team => team.id === selectedChartTeamId.value)
+      if (selectedTeam) {
+        userId = selectedTeam.userId
+      }
+    }
 
-    const data = await getIncomeStatistics(startDate, endDate)
+    const data = await getIncomeStatistics(startDate, endDate, userId)
     incomeStats.value = data
 
     // 渲染图表
@@ -226,20 +226,10 @@ const renderChart = () => {
 
   // 准备数据
   const labels = incomeStats.value.dates
-  let data, tipData, commissionData
-
-  // 根据是否选择了特定团队来决定使用哪组数据
-  if (selectedTeamChartData.value) {
-    // 使用选中团队的数据
-    data = selectedTeamChartData.value.data
-    tipData = selectedTeamChartData.value.tip
-    commissionData = selectedTeamChartData.value.commission
-  } else {
-    // 使用总体数据
-    data = incomeStats.value.total
-    tipData = incomeStats.value.totalTip
-    commissionData = incomeStats.value.totalCommission
-  }
+  // 直接使用 API 返回的数据(已根据选择的团队过滤)
+  const data = incomeStats.value.total
+  const tipData = incomeStats.value.totalTip
+  const commissionData = incomeStats.value.totalCommission
 
   const datasets = [
     {
@@ -295,7 +285,7 @@ const renderChart = () => {
 
 // 监听团队选择变化
 watch(selectedChartTeamId, () => {
-  renderChart()
+  loadIncomeStats()
 })
 
 // 组件挂载时加载数据