feat: 修改登录页加入企业逻辑

This commit is contained in:
rd
2025-07-23 17:02:24 +08:00
parent 45e4da004d
commit 5525d28f2d
4 changed files with 29 additions and 8 deletions

View File

@ -12,6 +12,7 @@ import { ref, onMounted } from 'vue';
import { getQueryParam } from '@/utils/helper'; import { getQueryParam } from '@/utils/helper';
import { getEnterpriseByInviteCode, joinEnterpriseByInviteCode } from '@/api/all'; import { getEnterpriseByInviteCode, joinEnterpriseByInviteCode } from '@/api/all';
const enterprise = ref(); const enterprise = ref();
const inviteCode = ref(); const inviteCode = ref();
@ -27,8 +28,11 @@ async function handleJoin() {
await joinEnterpriseByInviteCode(inviteCode.value); await joinEnterpriseByInviteCode(inviteCode.value);
AMessage.success('加入成功'); AMessage.success('加入成功');
} }
onMounted(() => { // onMounted(() => {
getEnterprise(); // getEnterprise();
// });
defineExpose({
getEnterprise,
}); });
</script> </script>
<style lang="scss"> <style lang="scss">

View File

@ -1,13 +1,17 @@
<script setup lang="ts"> <script setup>
import { useAppStore } from '@/stores'; import { useAppStore } from '@/stores';
import { useResponsive } from '@/hooks'; import { useResponsive } from '@/hooks';
import JoinModal from '@/components/join-modal.vue'; import JoinModal from '@/components/join-modal.vue';
import { getQueryParam } from '@/utils/helper'; import { getQueryParam } from '@/utils/helper';
import { useUserStore } from '@/stores';
import { ref, onMounted, computed } from 'vue'; import { ref, onMounted, computed } from 'vue';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
const joinEnterpriseVisible = ref(false); const joinEnterpriseVisible = ref(false);
const joinModalRef = ref(null);
const appStore = useAppStore(); const appStore = useAppStore();
const userStore = useUserStore();
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
@ -36,14 +40,15 @@ const paddingStyle = computed(() => {
onMounted(() => { onMounted(() => {
checkHasInviteCode(); checkHasInviteCode();
}); });
const setCollapsed = (val: boolean) => { const setCollapsed = (val) => {
appStore.updateSettings({ menuCollapse: val }); appStore.updateSettings({ menuCollapse: val });
}; };
const checkHasInviteCode = () => { const checkHasInviteCode = () => {
const inviteCode = getQueryParam('invite_code'); const inviteCode = getQueryParam('invite_code');
if (inviteCode) { if (userStore.isLogin && inviteCode) {
joinEnterpriseVisible.value = true; joinEnterpriseVisible.value = true;
joinModalRef.value?.getEnterprise?.();
} }
}; };
const drawerVisible = ref(false); const drawerVisible = ref(false);
@ -57,7 +62,7 @@ provide('toggleDrawerMenu', () => {
<template> <template>
<a-layout :class="['layout', { mobile: appStore.hideMenu }]"> <a-layout :class="['layout', { mobile: appStore.hideMenu }]">
<JoinModal v-model:visible="joinEnterpriseVisible" /> <JoinModal v-model:visible="joinEnterpriseVisible" ref="joinModalRef" />
<div v-if="navbar" class="layout-navbar"> <div v-if="navbar" class="layout-navbar">
<base-navbar /> <base-navbar />
</div> </div>

View File

@ -18,9 +18,10 @@ export default function setupUserLoginInfoGuard(router: Router) {
const routeName = to?.name as string; const routeName = to?.name as string;
const requiresAuth = to?.meta?.requiresAuth || false; const requiresAuth = to?.meta?.requiresAuth || false;
const requireLogin = to?.meta?.requireLogin || false; const requireLogin = to?.meta?.requireLogin || false;
const query = to?.query ?? {};
if (requireLogin && !userStore.isLogin) { if (requireLogin && !userStore.isLogin) {
goUserLogin(); goUserLogin(query);
next(); next();
return; return;
} }

View File

@ -125,13 +125,16 @@
<script setup lang="ts"> <script setup lang="ts">
import PuzzleVerification from './components/PuzzleVerification.vue'; import PuzzleVerification from './components/PuzzleVerification.vue';
import { fetchLoginCaptCha, fetchAuthorizationsCaptcha, fetchProfileInfo } from '@/api/all/login'; import { fetchLoginCaptCha, fetchAuthorizationsCaptcha, fetchProfileInfo } from '@/api/all/login';
import { joinEnterpriseByInviteCode } from '@/api/all';
import { ref, reactive, onUnmounted, computed } from 'vue'; import { ref, reactive, onUnmounted, computed } from 'vue';
import { useUserStore } from '@/stores'; import { useUserStore } from '@/stores';
import { useEnterpriseStore } from '@/stores/modules/enterprise'; import { useEnterpriseStore } from '@/stores/modules/enterprise';
import { handleUserLogin } from '@/utils/user'; import { handleUserLogin } from '@/utils/user';
import router from '@/router'; import router from '@/router';
import { useRoute } from 'vue-router';
const formRef = ref(); const formRef = ref();
const route = useRoute();
const userStore = useUserStore(); const userStore = useUserStore();
const enterpriseStore = useEnterpriseStore(); const enterpriseStore = useEnterpriseStore();
const countdown = ref(0); const countdown = ref(0);
@ -144,7 +147,6 @@ const submitting = ref(false);
const hasCheck = ref(false); const hasCheck = ref(false);
const mobileNumber = ref(''); const mobileNumber = ref('');
const selectedAccountIndex = ref(0); const selectedAccountIndex = ref(0);
const accounts = ref([]); const accounts = ref([]);
const loginForm = reactive({ const loginForm = reactive({
@ -299,6 +301,15 @@ const handleSubmit = async () => {
// 处理登录成功逻辑 // 处理登录成功逻辑
AMessage.success(isLogin.value ? '登录成功' : '注册成功'); AMessage.success(isLogin.value ? '登录成功' : '注册成功');
userStore.setToken(data.access_token); userStore.setToken(data.access_token);
const { invite_code } = route.query;
if (invite_code) {
const { code } = await joinEnterpriseByInviteCode(invite_code as string);
if (code === 200) {
AMessage.success('加入企业成功');
}
}
getProfileInfo(); getProfileInfo();
} }
} catch (error) { } catch (error) {