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

feat: 企业端首页使用真实API显示统计数据

- 修改在职率显示,使用 API 数据替代硬编码 92%
- 修改平均薪资显示,使用 API 数据替代前端计算
- 添加加载状态和错误处理
- 更新下拉刷新逻辑,包含新统计数据

修复问题:
- 在职率从硬编码 92% 改为 API 返回值
- 平均薪资从前端计算 ¥4,500 改为 API 返回 ¥2,500
- 确保与数据统计页面数据一致

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname 1 день назад
Родитель
Сommit
02cde60905
1 измененных файлов с 17 добавлено и 9 удалено
  1. 17 9
      mini/src/pages/yongren/dashboard/index.tsx

+ 17 - 9
mini/src/pages/yongren/dashboard/index.tsx

@@ -147,7 +147,9 @@ const Dashboard: React.FC = () => {
     try {
       await Promise.all([
         queryClient.invalidateQueries({ queryKey: ['enterpriseOverview'] }),
-        queryClient.invalidateQueries({ queryKey: ['recentAllocations'] })
+        queryClient.invalidateQueries({ queryKey: ['recentAllocations'] }),
+        queryClient.invalidateQueries({ queryKey: ['dashboard', 'employment-rate'] }),
+        queryClient.invalidateQueries({ queryKey: ['dashboard', 'average-salary'] })
       ])
     } finally {
       Taro.stopPullDownRefresh()
@@ -371,17 +373,23 @@ const Dashboard: React.FC = () => {
                 <View className="pulse-dot mr-2" />
                 <Text className="text-sm text-gray-600">在职率</Text>
               </View>
-              <Text className="text-2xl font-bold text-gray-800">
-                {overview?.totalEmployees ? '92%' : '--'}
-              </Text>
+              {isLoadingEmploymentRate ? (
+                <Text className="text-2xl font-bold text-gray-400">加载中...</Text>
+              ) : !isEmploymentRateSuccess(employmentRateData) ? (
+                <Text className="text-2xl font-bold text-gray-400">--</Text>
+              ) : (
+                <Text className="text-2xl font-bold text-gray-800">{employmentRateData.rate ?? 0}%</Text>
+              )}
             </View>
             <View className="stat-card bg-white p-4 rounded-lg flex flex-col items-center">
               <Text className="text-sm text-gray-600 mb-2">平均薪资</Text>
-              <Text className="text-2xl font-bold text-gray-800">
-                {allocations && allocations.length > 0
-                  ? `¥${Math.round(allocations.reduce((sum: number, a: AllocationData) => sum + a.salary, 0) / allocations.length).toLocaleString()}`
-                  : '¥0'}
-              </Text>
+              {isLoadingAverageSalary ? (
+                <Text className="text-2xl font-bold text-gray-400">加载中...</Text>
+              ) : !isAverageSalarySuccess(averageSalaryData) ? (
+                <Text className="text-2xl font-bold text-gray-400">--</Text>
+              ) : (
+                <Text className="text-2xl font-bold text-gray-800">¥{(averageSalaryData.average ?? 0).toLocaleString()}</Text>
+              )}
             </View>
           </View>
         </View>