From e4e58bc3bd06cd4a403898920670db42130ba266 Mon Sep 17 00:00:00 2001 From: wangdan-fit2cloud Date: Thu, 12 Jun 2025 12:03:43 +0800 Subject: [PATCH] feat: user-login --- .../login-layout}/LoginContainer.vue | 0 .../login-layout}/LoginLayout.vue | 2 +- .../layout/login-layout/UserLoginLayout.vue | 60 +++ ui/src/request/index.ts | 2 +- ui/src/router/index.ts | 2 +- ui/src/router/routes.ts | 7 + .../views/chat/user-login/ForgotPassword.vue | 137 ++++++ .../views/chat/user-login/ResetPassword.vue | 137 ++++++ .../user-login/components/LoginContainer.vue | 37 ++ .../user-login/components/LoginLayout.vue | 108 +++++ ui/src/views/chat/user-login/index.vue | 450 ++++++++++++++++++ .../user-login/scanCompinents/QrCodeTab.vue | 74 +++ .../scanCompinents/dingtalkQrCode.vue | 141 ++++++ .../user-login/scanCompinents/larkQrCode.vue | 59 +++ .../user-login/scanCompinents/wecomQrCode.vue | 79 +++ ui/src/views/login/ForgotPassword.vue | 4 +- ui/src/views/login/ResetPassword.vue | 2 + ui/src/views/login/index.vue | 4 +- ui/src/views/theme/LoginPreview.vue | 4 +- 19 files changed, 1301 insertions(+), 8 deletions(-) rename ui/src/{views/login/components => layout/login-layout}/LoginContainer.vue (100%) rename ui/src/{views/login/components => layout/login-layout}/LoginLayout.vue (98%) create mode 100644 ui/src/layout/login-layout/UserLoginLayout.vue create mode 100644 ui/src/views/chat/user-login/ForgotPassword.vue create mode 100644 ui/src/views/chat/user-login/ResetPassword.vue create mode 100644 ui/src/views/chat/user-login/components/LoginContainer.vue create mode 100644 ui/src/views/chat/user-login/components/LoginLayout.vue create mode 100644 ui/src/views/chat/user-login/index.vue create mode 100644 ui/src/views/chat/user-login/scanCompinents/QrCodeTab.vue create mode 100644 ui/src/views/chat/user-login/scanCompinents/dingtalkQrCode.vue create mode 100644 ui/src/views/chat/user-login/scanCompinents/larkQrCode.vue create mode 100644 ui/src/views/chat/user-login/scanCompinents/wecomQrCode.vue diff --git a/ui/src/views/login/components/LoginContainer.vue b/ui/src/layout/login-layout/LoginContainer.vue similarity index 100% rename from ui/src/views/login/components/LoginContainer.vue rename to ui/src/layout/login-layout/LoginContainer.vue diff --git a/ui/src/views/login/components/LoginLayout.vue b/ui/src/layout/login-layout/LoginLayout.vue similarity index 98% rename from ui/src/views/login/components/LoginLayout.vue rename to ui/src/layout/login-layout/LoginLayout.vue index 5ea09fe62..8c2150c4e 100644 --- a/ui/src/views/login/components/LoginLayout.vue +++ b/ui/src/layout/login-layout/LoginLayout.vue @@ -79,7 +79,7 @@ const loginImage = computed(() => { return `${fileURL.value}` } else { const imgName = getThemeImg(theme.themeInfo?.theme) - const imgPath = `../../../assets/theme/${imgName}.jpg` + const imgPath = `../../assets/theme/${imgName}.jpg` const imageUrl = new URL(imgPath, import.meta.url).href return imageUrl } diff --git a/ui/src/layout/login-layout/UserLoginLayout.vue b/ui/src/layout/login-layout/UserLoginLayout.vue new file mode 100644 index 000000000..09b2893a7 --- /dev/null +++ b/ui/src/layout/login-layout/UserLoginLayout.vue @@ -0,0 +1,60 @@ + + + diff --git a/ui/src/request/index.ts b/ui/src/request/index.ts index 4f35ee077..cda7de444 100644 --- a/ui/src/request/index.ts +++ b/ui/src/request/index.ts @@ -47,7 +47,7 @@ instance.interceptors.response.use( } if ( !response.config.url.includes('/valid') && - !response.config.url.includes('/function_lib/debug') + !response.config.url.includes('/tool/debug') ) { MsgError(response.data.message) return Promise.reject(response.data) diff --git a/ui/src/router/index.ts b/ui/src/router/index.ts index 8283e332a..06128d769 100644 --- a/ui/src/router/index.ts +++ b/ui/src/router/index.ts @@ -25,8 +25,8 @@ router.beforeEach( return } const { user, login } = useStore() - const notAuthRouteNameList = ['register', 'login', 'forgot_password', 'reset_password', 'Chat'] + const notAuthRouteNameList = ['login', 'ForgotPassword', 'ResetPassword', 'Chat', 'UserLogin'] if (!notAuthRouteNameList.includes(to.name ? to.name.toString() : '')) { if (to.query && to.query.token) { localStorage.setItem('token', to.query.token.toString()) diff --git a/ui/src/router/routes.ts b/ui/src/router/routes.ts index 6185d6ff5..7f470824c 100644 --- a/ui/src/router/routes.ts +++ b/ui/src/router/routes.ts @@ -24,6 +24,13 @@ export const routes: Array = [ component: () => import('@/views/chat/index.vue'), }, + // 对话用户登录 + { + path: '/user-login/:accessToken', + name: 'UserLogin', + component: () => import('@/views/chat/user-login/index.vue'), + }, + { path: '/login', name: 'login', diff --git a/ui/src/views/chat/user-login/ForgotPassword.vue b/ui/src/views/chat/user-login/ForgotPassword.vue new file mode 100644 index 000000000..6cd5c5b58 --- /dev/null +++ b/ui/src/views/chat/user-login/ForgotPassword.vue @@ -0,0 +1,137 @@ + + + diff --git a/ui/src/views/chat/user-login/ResetPassword.vue b/ui/src/views/chat/user-login/ResetPassword.vue new file mode 100644 index 000000000..f8138c2f8 --- /dev/null +++ b/ui/src/views/chat/user-login/ResetPassword.vue @@ -0,0 +1,137 @@ + + + diff --git a/ui/src/views/chat/user-login/components/LoginContainer.vue b/ui/src/views/chat/user-login/components/LoginContainer.vue new file mode 100644 index 000000000..0415bdc96 --- /dev/null +++ b/ui/src/views/chat/user-login/components/LoginContainer.vue @@ -0,0 +1,37 @@ + + + diff --git a/ui/src/views/chat/user-login/components/LoginLayout.vue b/ui/src/views/chat/user-login/components/LoginLayout.vue new file mode 100644 index 000000000..8c2150c4e --- /dev/null +++ b/ui/src/views/chat/user-login/components/LoginLayout.vue @@ -0,0 +1,108 @@ + + + diff --git a/ui/src/views/chat/user-login/index.vue b/ui/src/views/chat/user-login/index.vue new file mode 100644 index 000000000..93d42cf07 --- /dev/null +++ b/ui/src/views/chat/user-login/index.vue @@ -0,0 +1,450 @@ + + + diff --git a/ui/src/views/chat/user-login/scanCompinents/QrCodeTab.vue b/ui/src/views/chat/user-login/scanCompinents/QrCodeTab.vue new file mode 100644 index 000000000..a7781dd69 --- /dev/null +++ b/ui/src/views/chat/user-login/scanCompinents/QrCodeTab.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/ui/src/views/chat/user-login/scanCompinents/dingtalkQrCode.vue b/ui/src/views/chat/user-login/scanCompinents/dingtalkQrCode.vue new file mode 100644 index 000000000..670084d38 --- /dev/null +++ b/ui/src/views/chat/user-login/scanCompinents/dingtalkQrCode.vue @@ -0,0 +1,141 @@ + + + + + diff --git a/ui/src/views/chat/user-login/scanCompinents/larkQrCode.vue b/ui/src/views/chat/user-login/scanCompinents/larkQrCode.vue new file mode 100644 index 000000000..fd4e4fcb4 --- /dev/null +++ b/ui/src/views/chat/user-login/scanCompinents/larkQrCode.vue @@ -0,0 +1,59 @@ + + + + diff --git a/ui/src/views/chat/user-login/scanCompinents/wecomQrCode.vue b/ui/src/views/chat/user-login/scanCompinents/wecomQrCode.vue new file mode 100644 index 000000000..d0e639158 --- /dev/null +++ b/ui/src/views/chat/user-login/scanCompinents/wecomQrCode.vue @@ -0,0 +1,79 @@ + + + + + diff --git a/ui/src/views/login/ForgotPassword.vue b/ui/src/views/login/ForgotPassword.vue index 83ff33da1..3ab563136 100644 --- a/ui/src/views/login/ForgotPassword.vue +++ b/ui/src/views/login/ForgotPassword.vue @@ -28,7 +28,7 @@ size="large" class="input-item" v-model="resetPasswordForm.re_password" - :placeholder="$t('views.login.loginForm..re_password.placeholder')" + :placeholder="$t('views.login.loginForm.re_password.placeholder')" show-password > @@ -55,6 +55,8 @@