From 41b3030442c195aadd0110db6b0f685ba283edf2 Mon Sep 17 00:00:00 2001 From: freedakgmail Date: Wed, 5 Aug 2026 07:53:53 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E8=AE=BE=E7=BD=AE=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E8=B0=83=E6=95=B4-=E9=80=80=E4=BC=91=E6=8F=90?= =?UTF-8?q?=E9=86=92=E7=8B=AC=E7=AB=8Btab+=E6=98=BE=E7=A4=BA=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E5=B9=B6=E5=85=A5=E4=BC=81=E4=B8=9A=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 退休提醒从企业信息中拆分为独立tab(RetirementSettings 独立 Card 组件) - 显示设置从独立tab移入企业信息卡片底部(移除 DisplaySettings 组件) - tab顺序:企业信息、用户管理、套餐、通知设置、退休提醒、数据导入、数据导出 --- frontend/src/pages/Settings.tsx | 88 ++++++++++----------------------- 1 file changed, 27 insertions(+), 61 deletions(-) diff --git a/frontend/src/pages/Settings.tsx b/frontend/src/pages/Settings.tsx index 2f1529d..e3236f1 100644 --- a/frontend/src/pages/Settings.tsx +++ b/frontend/src/pages/Settings.tsx @@ -14,7 +14,7 @@ import { useConfirm } from '../hooks/useConfirm' export default function Settings() { const queryClient = useQueryClient() - const [activeSection, setActiveSection] = useState<'org' | 'users' | 'plan' | 'notifications' | 'import' | 'export' | 'display'>('org') + const [activeSection, setActiveSection] = useState<'org' | 'users' | 'plan' | 'notifications' | 'retirement' | 'import' | 'export'>('org') const { data: orgData } = useQuery({ queryKey: ['org-settings'], @@ -40,9 +40,9 @@ export default function Settings() { { key: 'users' as const, label: '用户管理', icon: Users }, { key: 'plan' as const, label: '套餐', icon: CreditCard }, { key: 'notifications' as const, label: '通知设置', icon: Bell }, + { key: 'retirement' as const, label: '退休提醒', icon: Clock }, { key: 'import' as const, label: '数据导入', icon: FileSpreadsheet }, { key: 'export' as const, label: '数据导出', icon: Download }, - { key: 'display' as const, label: '显示设置', icon: LayoutGrid }, ] return ( @@ -79,14 +79,17 @@ export default function Settings() { {activeSection === 'users' && } {activeSection === 'plan' && } {activeSection === 'notifications' && } + {activeSection === 'retirement' && ( + updateOrgMutation.mutate(data)} /> + )} {activeSection === 'import' && } {activeSection === 'export' && } - {activeSection === 'display' && } ) } function OrgSettings({ orgData, onSave, saving }: { orgData: any; onSave: (data: any) => void; saving: boolean }) { + const [pageSize, setPageSize] = useState(getPageSize()) const [form, setForm] = useState({ name: '', contactName: '', @@ -144,44 +147,36 @@ function OrgSettings({ orgData, onSave, saving }: { orgData: any; onSave: (data: - { setForm({ ...form, retirementReminderEnabled: v }); onSave({ ...form, retirementReminderEnabled: v }) }} /> - - {/* 电子签设置 */} + {/* 显示设置 */}
- -

电子签署设置

+ +

显示设置

-

开启后,对应场景将使用电子签署替代默认确认方式。关闭则保持原有确认方式(阅读确认/点击确认)。

-
- {[ - { key: 'esignPolicyEnabled', label: '规章制度电子签', desc: '开启后制度签收升级为电子签署,缺省为阅读确认' }, - { key: 'esignPayslipEnabled', label: '工资条电子签', desc: '开启后工资条确认升级为电子签署,缺省为点击确认' }, - { key: 'esignOnboardingEnabled', label: '入职文件电子签', desc: '开启后入职填报时签署入职相关文件,缺省不签' }, - ].map(item => ( -
-
-
{item.label}
-
{item.desc}
-
- +
+
+ +

设置所有列表页面每页显示的记录条数,保存后立即生效

+
+ +
- ))} +
) } -function RetirementSection({ enabled, onToggle }: { enabled: boolean; onToggle: (v: boolean) => void }) { +function RetirementSettings({ orgData, onSave }: { orgData: any; onSave: (data: any) => void }) { const queryClient = useQueryClient() const [confirming, setConfirming] = useState(false) + const enabled = orgData?.retirementReminderEnabled || false const { data: policyData, isLoading } = useQuery({ queryKey: ['retirement-policy'], @@ -229,7 +224,7 @@ function RetirementSection({ enabled, onToggle }: { enabled: boolean; onToggle: ) return ( -
+
@@ -248,7 +243,7 @@ function RetirementSection({ enabled, onToggle }: { enabled: boolean; onToggle: {enabled ? '已开启' : '未开启'}
)} -
+
) } @@ -1327,32 +1322,3 @@ function MonthlyImport() { ) } -function DisplaySettings() { - const [size, setSize] = useState(getPageSize()) - - const handleSave = () => { - setGlobalPageSize(size) - toast.success(`分页大小已设置为 ${size} 条/页`) - } - - return ( - -

显示设置

-
-
- -

设置所有列表页面每页显示的记录条数,保存后立即生效

-
- - -
-
-
-
- ) -}