Browse Source

refactor(enterprise): 企业端底部导航改为 岗位/人才/沟通/我的,首屏落地岗位

master
doublex001 2 months ago
parent
commit
e4324e585f
  1. 10
      app/(enterprise)/_layout.tsx
  2. 2
      app/(enterprise)/enterprise-overview.tsx
  3. 6
      app/enterprise-certification.tsx
  4. 2
      app/identity-select.tsx
  5. 2
      app/index.tsx

10
app/(enterprise)/_layout.tsx

@ -6,14 +6,14 @@ import { Animated, Easing, Pressable, StyleSheet, View } from 'react-native';
import { colors } from '../../src/theme'; import { colors } from '../../src/theme';
import { useRole } from '../../src/context/RoleContext'; import { useRole } from '../../src/context/RoleContext';
/** 企业端默认落地「概览」Tab */ /** 企业端默认落地「岗位」Tab(与求职端首屏一致) */
export const unstable_settings = { export const unstable_settings = {
initialRouteName: 'enterprise-overview', initialRouteName: 'job-management',
}; };
/** 企业端用 success(绿) 区分求职端 primary(蓝);未选中 -outline,选中填充实心 */ /** 企业端用 success(绿) 区分求职端 primary(蓝);未选中 -outline,选中填充实心 */
const ICON_MAP = { const ICON_MAP = {
'enterprise-overview': { outline: 'grid-outline', filled: 'grid' }, 'enterprise-overview': { outline: 'person-outline', filled: 'person' },
'job-management': { outline: 'folder-outline', filled: 'folder' }, 'job-management': { outline: 'folder-outline', filled: 'folder' },
'talent-recommendation': { outline: 'people-outline', filled: 'people' }, 'talent-recommendation': { outline: 'people-outline', filled: 'people' },
'enterprise-chat': { outline: 'chatbubble-outline', filled: 'chatbubble' }, 'enterprise-chat': { outline: 'chatbubble-outline', filled: 'chatbubble' },
@ -136,7 +136,7 @@ function TabBar({ state, descriptors, navigation, insets }: BottomTabBarProps) {
} }
/** /**
* 企业端底部 Tab 导航:概览 / 岗位 / 人才 / 沟通 * 企业端底部 Tab 导航:岗位 / 人才 / 沟通 / 我的
* 绿色 success 强调,与求职端蓝色 primary 形成视觉区分。 * 绿色 success 强调,与求职端蓝色 primary 形成视觉区分。
*/ */
export default function EnterpriseTabLayout() { export default function EnterpriseTabLayout() {
@ -151,10 +151,10 @@ export default function EnterpriseTabLayout() {
screenOptions={{ headerShown: false }} screenOptions={{ headerShown: false }}
tabBar={(props) => <TabBar {...props} />} tabBar={(props) => <TabBar {...props} />}
> >
<Tabs.Screen name="enterprise-overview" options={{ title: '概览' }} />
<Tabs.Screen name="job-management" options={{ title: '岗位' }} /> <Tabs.Screen name="job-management" options={{ title: '岗位' }} />
<Tabs.Screen name="talent-recommendation" options={{ title: '人才' }} /> <Tabs.Screen name="talent-recommendation" options={{ title: '人才' }} />
<Tabs.Screen name="enterprise-chat" options={{ title: '沟通' }} /> <Tabs.Screen name="enterprise-chat" options={{ title: '沟通' }} />
<Tabs.Screen name="enterprise-overview" options={{ title: '我的' }} />
</Tabs> </Tabs>
); );
} }

2
app/(enterprise)/enterprise-overview.tsx

@ -30,7 +30,7 @@ function Header({ onBack }: { onBack: () => void }) {
<Pressable style={styles.headerBtn} onPress={onBack} hitSlop={8}> <Pressable style={styles.headerBtn} onPress={onBack} hitSlop={8}>
<Ionicons name="chevron-back" size={24} color={colors.textInverse} /> <Ionicons name="chevron-back" size={24} color={colors.textInverse} />
</Pressable> </Pressable>
<Text style={styles.headerTitle}>企业数据总览</Text> <Text style={styles.headerTitle}>我的</Text>
<Pressable style={styles.headerBtn} hitSlop={8}> <Pressable style={styles.headerBtn} hitSlop={8}>
<Ionicons name="ellipsis-horizontal" size={22} color={colors.textInverse} /> <Ionicons name="ellipsis-horizontal" size={22} color={colors.textInverse} />
</Pressable> </Pressable>

6
app/enterprise-certification.tsx

@ -136,13 +136,13 @@ export default function EnterpriseCertificationScreen() {
await submit(form); await submit(form);
// 提交即视为走完「企业认证」必经步骤,标记后进入企业端(审核中也可浏览) // 提交即视为走完「企业认证」必经步骤,标记后进入企业端(审核中也可浏览)
completeEnterpriseVerify(); completeEnterpriseVerify();
router.replace('/(enterprise)/enterprise-overview'); router.replace('/(enterprise)/job-management');
}; };
const handleSkip = () => { const handleSkip = () => {
// 允许稍后认证:标记步骤已完成,先进企业端 // 允许稍后认证:标记步骤已完成,先进企业端
completeEnterpriseVerify(); completeEnterpriseVerify();
router.replace('/(enterprise)/enterprise-overview'); router.replace('/(enterprise)/job-management');
}; };
return ( return (
@ -177,7 +177,7 @@ export default function EnterpriseCertificationScreen() {
<Ionicons name="checkmark-circle-outline" size={48} color={colors.success} /> <Ionicons name="checkmark-circle-outline" size={48} color={colors.success} />
<Text style={styles.successTitle}>企业认证已通过</Text> <Text style={styles.successTitle}>企业认证已通过</Text>
<Text style={styles.successDesc}>您已进入企业端,可发布岗位并管理招聘流程</Text> <Text style={styles.successDesc}>您已进入企业端,可发布岗位并管理招聘流程</Text>
<Pressable style={styles.successBtn} onPress={() => router.replace('/(enterprise)/enterprise-overview')}> <Pressable style={styles.successBtn} onPress={() => router.replace('/(enterprise)/job-management')}>
<Text style={styles.successBtnText}>进入企业端</Text> <Text style={styles.successBtnText}>进入企业端</Text>
</Pressable> </Pressable>
</View> </View>

2
app/identity-select.tsx

@ -118,7 +118,7 @@ export default function IdentitySelectScreen() {
} else { } else {
setRole('enterprise'); setRole('enterprise');
router.replace( router.replace(
enterpriseVerified ? '/(enterprise)/enterprise-overview' : '/enterprise-certification', enterpriseVerified ? '/(enterprise)/job-management' : '/enterprise-certification',
); );
} }
}; };

2
app/index.tsx

@ -22,7 +22,7 @@ export default function Index() {
// 两个路由组均无 index,必须用显式落地路由,否则落地页空白 // 两个路由组均无 index,必须用显式落地路由,否则落地页空白
return ( return (
<Redirect <Redirect
href={role === 'candidate' ? '/(tabs)/jobs' : '/(enterprise)/enterprise-overview'} href={role === 'candidate' ? '/(tabs)/jobs' : '/(enterprise)/job-management'}
/> />
); );
} }

Loading…
Cancel
Save