fix: HR系统优化批次1 - P0/P1问题修复

P0-3: 修复合同状态判断逻辑,有合同记录但signDate为null时不再误判未签
P0-5: 修复参保城市默认北京问题,导入和预览均改为null
P0-11: 添加全局ErrorBoundary防止白屏,三处布局均包裹
P1-2: 合同附件改为可选,允许先保存再补充上传
P1-7.2: 排班弹窗增加员工搜索(姓名/部门)
P1-8.2: 加班费导入支持Excel(xlsx/xls)格式,兼容中英文列名
P1-9: 社保/公积金基数月度办理支持逐人修改,后端返回recordId
This commit is contained in:
selfrelease
2026-07-30 18:34:36 +08:00
parent 411adb7ddc
commit 55286819ae
11 changed files with 480 additions and 39 deletions
+13 -4
View File
@@ -8,6 +8,7 @@ import MobileTabBar from './components/layout/MobileTabBar'
import PortalLayout from './components/layout/PortalLayout'
import PageContainer from './components/layout/PageContainer'
import { SkeletonPage } from './components/ui/Skeleton'
import ErrorBoundary from './components/ui/ErrorBoundary'
const Login = lazy(() => import('./pages/auth/Login'))
const Register = lazy(() => import('./pages/auth/Register'))
@@ -68,7 +69,9 @@ function AdminLayout({ children }: { children: React.ReactNode }) {
<TopNav onMenuClick={() => setSidebarOpen(true)} />
<main className="flex-1 py-6 pb-20 md:pb-6">
<PageContainer>
<Suspense fallback={<SkeletonPage />}>{children}</Suspense>
<ErrorBoundary>
<Suspense fallback={<SkeletonPage />}>{children}</Suspense>
</ErrorBoundary>
</PageContainer>
</main>
<MobileTabBar />
@@ -103,7 +106,9 @@ function PlatformLayout({ children }: { children: React.ReactNode }) {
</header>
<main className="flex-1 py-6 px-4 md:px-6">
<div className="max-w-7xl mx-auto">
<Suspense fallback={<SkeletonPage />}>{children}</Suspense>
<ErrorBoundary>
<Suspense fallback={<SkeletonPage />}>{children}</Suspense>
</ErrorBoundary>
</div>
</main>
</div>
@@ -116,14 +121,18 @@ function PortalLayoutWrapper({ children, showNav = true }: { children: React.Rea
return (
<div className="min-h-screen bg-surface pt-safe pb-safe">
<main className="max-w-md mx-auto py-6 px-4">
<Suspense fallback={<SkeletonPage />}>{children}</Suspense>
<ErrorBoundary>
<Suspense fallback={<SkeletonPage />}>{children}</Suspense>
</ErrorBoundary>
</main>
</div>
)
}
return (
<PortalLayout>
<Suspense fallback={<SkeletonPage />}>{children}</Suspense>
<ErrorBoundary>
<Suspense fallback={<SkeletonPage />}>{children}</Suspense>
</ErrorBoundary>
</PortalLayout>
)
}