diff --git a/src/App.vue b/src/App.vue index 5079c0d..036a5ba 100644 --- a/src/App.vue +++ b/src/App.vue @@ -31,10 +31,9 @@ const redTheme = { const init = async () => { const { isLogin } = userStore; + // 已开通 if (isLogin) { await initApp(); - - sidebarStore.startUnreadInfoPolling(); } else { sidebarStore.stopUnreadInfoPolling(); } @@ -42,6 +41,7 @@ const init = async () => { onMounted(() => { init(); + // 监听全局未处理错误 window.addEventListener('unhandledrejection', (event) => { event.preventDefault(); diff --git a/src/api/all/login.ts b/src/api/all/login.ts index d54db76..615e5fa 100644 --- a/src/api/all/login.ts +++ b/src/api/all/login.ts @@ -71,4 +71,19 @@ export const postForgetPasswordCaptcha = (params = {}) => { // 忘记密码 export const postForgetPassword = (params = {}) => { return Http.post('/v1/users/forget-password', params); +}; + +// 创建企业 +export const postCreateEnterprises = (params = {}) => { + return Http.post('/v1/enterprises', params); +}; + +// 获取我的企业列表 +export const getMyEnterprises = () => { + return Http.get('/v1/me/enterprises'); +}; + +// 获取我的主企业信息 +export const getMyPrimaryEnterprise = () => { + return Http.get('/v1/me/primary-enterprise'); }; \ No newline at end of file diff --git a/src/stores/modules/user/index.ts b/src/stores/modules/user/index.ts index fb2ed6a..ca43193 100644 --- a/src/stores/modules/user/index.ts +++ b/src/stores/modules/user/index.ts @@ -1,7 +1,7 @@ import router from '@/router'; import { defineStore } from 'pinia'; import { fetchProfileInfo } from '@/api/all/login'; -import { useSidebarStore } from '@/stores/modules/side-bar'; +// import { useSidebarStore } from '@/stores/modules/side-bar'; import { glsWithCatch, slsWithCatch, rlsWithCatch } from '@/utils/stroage'; interface UserInfo { @@ -10,6 +10,8 @@ interface UserInfo { head_image: String; current_enterprise_id: number; mobile: string; + primary_enterprise: any; // 主企业信息 + [key: string]: any; // 添加其他用户属性... } @@ -37,6 +39,10 @@ export const useUserStore = defineStore('user', { isLogin(): boolean { return !!this.token; }, + // 是否开通企业 + isOpenEnterprise(): boolean { + return this.userInfo?.primary_enterprise?.subscribe_status === 1; + }, }, actions: { // 设置 Token diff --git a/src/utils/user.ts b/src/utils/user.ts index 99fcf29..d6b6a81 100644 --- a/src/utils/user.ts +++ b/src/utils/user.ts @@ -27,20 +27,21 @@ export const getUserEnterpriseInfo = async () => { export async function initApp() { const userStore = useUserStore(); const chatStore = useChatStore(); - - await chatStore.getAgentInfo(); // 初始化智能体信息 + const sidebarStore = useSidebarStore(); await userStore.getUserInfo(); // 初始化用户信息 + + if (!userStore.isOpenEnterprise) return; + await getUserEnterpriseInfo(); // 初始化企业信息、navbar菜单、允许访问的路由 + await chatStore.getAgentInfo(); // 初始化智能体信息 + + sidebarStore.startUnreadInfoPolling(); // 初始化未读信息 } // 登录处理 export async function handleUserLogin() { - const sidebarStore = useSidebarStore(); - await initApp(); - sidebarStore.startUnreadInfoPolling(); // 初始化未读信息 - handleUserHome(); } diff --git a/src/views/login/components/login-form/index.vue b/src/views/login/components/login-form/index.vue index f1c5410..8f0cc51 100644 --- a/src/views/login/components/login-form/index.vue +++ b/src/views/login/components/login-form/index.vue @@ -277,18 +277,23 @@ const onTabChange = () => { const getProfileInfo = async () => { const { code, data } = await fetchProfileInfo(); if (code === 200) { - let enterprises = data['enterprises']; - mobileNumber.value = data['mobile']; - accounts.value = enterprises; + // 已开通 + if (data.primary_enterprise?.subscribe_status === 1) { + const enterprises = data['enterprises']; + mobileNumber.value = data['mobile']; + accounts.value = enterprises; - if (enterprises.length > 0) { - enterpriseStore.setEnterpriseInfo(data.enterprises[0]); - if (enterprises.length === 1) { - handleUserLogin(); - } else { - // 多个企业时候需要弹窗让用户选择企业 - selectAccountModalRef.value.open(); + if (enterprises.length > 0) { + enterpriseStore.setEnterpriseInfo(data.enterprises[0]); + if (enterprises.length === 1) { + handleUserLogin(); + } else { + // 多个企业时候需要弹窗让用户选择企业 + selectAccountModalRef.value.open(); + } } + } else { + router.push({name: 'Trial'}) } } }; @@ -312,7 +317,6 @@ const handleSubmit = async () => { const _fn = isCaptchaLogin.value ? fetchAuthorizationsCaptcha : postLoginPassword; const { code, data, message: errorInfo } = await _fn(loginForm); - console.log(code, errorInfo); if (code === 10001) { errMsg.value = errorInfo; return; diff --git a/src/views/login/components/register-form/index.vue b/src/views/login/components/register-form/index.vue index 19a92c2..00551b2 100644 --- a/src/views/login/components/register-form/index.vue +++ b/src/views/login/components/register-form/index.vue @@ -293,19 +293,24 @@ const handleVerificationSubmit = async () => { const getProfileInfo = async () => { const { code, data } = await fetchProfileInfo(); if (code === 200) { - let enterprises = data['enterprises']; - mobileNumber.value = data['mobile']; - accounts.value = enterprises; + // 已开通 + if (data.primary_enterprise?.subscribe_status === 1) { + const enterprises = data['enterprises']; + mobileNumber.value = data['mobile']; + accounts.value = enterprises; - if (enterprises.length > 0) { - enterpriseStore.setEnterpriseInfo(data.enterprises[0]); - if (enterprises.length === 1) { - setTimeout(() => { - handleUserLogin(); - }, 1500); - } else { - selectAccountModalRef.value.open(); + if (enterprises.length > 0) { + enterpriseStore.setEnterpriseInfo(data.enterprises[0]); + if (enterprises.length === 1) { + setTimeout(() => { + handleUserLogin(); + }, 1500); + } else { + selectAccountModalRef.value.open(); + } } + } else { + router.push({name: 'Trial'}) } } }; diff --git a/src/views/trial/index.vue b/src/views/trial/index.vue index 77832e3..a1e8205 100644 --- a/src/views/trial/index.vue +++ b/src/views/trial/index.vue @@ -3,7 +3,7 @@
-
+
@@ -13,7 +13,7 @@
-
+
申请试用 @@ -25,18 +25,18 @@

基本信息

- + - + -
+

您的试用申请已提交

@@ -87,7 +87,7 @@
-
+

试用已到期

@@ -115,24 +115,28 @@