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

View File

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

View File

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

View File

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