From a5c714a15b9d2592c0f982b73934546c6c134ea6 Mon Sep 17 00:00:00 2001 From: MojtabaSoumi Date: Thu, 16 Jul 2026 12:00:57 +0330 Subject: [PATCH] 1405/04/25 - --- components.d.ts | 2 + src/assets/css/main.less | 1 + src/layouts/styles/desktop-shell.less | 7 ++ src/views/login/composables/useLoginPage.ts | 21 ++++ src/views/login/desktop/DesktopLoginView.vue | 50 ++++++++ .../login/desktop/styles/desktop-login.less | 114 ++++++++++++++++++ src/views/login/index.vue | 71 ++++++----- src/views/login/mobile/MobileLoginView.vue | 42 +++++++ 8 files changed, 271 insertions(+), 37 deletions(-) create mode 100644 src/views/login/composables/useLoginPage.ts create mode 100644 src/views/login/desktop/DesktopLoginView.vue create mode 100644 src/views/login/desktop/styles/desktop-login.less create mode 100644 src/views/login/mobile/MobileLoginView.vue diff --git a/components.d.ts b/components.d.ts index 0dacc28..e8d8e5d 100644 --- a/components.d.ts +++ b/components.d.ts @@ -64,6 +64,8 @@ declare module 'vue' { Size: typeof import('./src/components/BasicPacks/BaseDatePicker/src/datePick/demo/size.vue')['default'] StartEnd: typeof import('./src/components/BasicPacks/BaseDatePicker/src/datePick/demo/start-end.vue')['default'] Suffix: typeof import('./src/components/BasicPacks/BaseDatePicker/src/datePick/demo/suffix.vue')['default'] + SupportMessengerBrandIcon: typeof import('./src/components/SupportMessengerBrandIcon.vue')['default'] + SupportMessengerPicker: typeof import('./src/components/SupportMessengerPicker.vue')['default'] Switchable: typeof import('./src/components/BasicPacks/BaseDatePicker/src/datePick/demo/switchable.vue')['default'] Text: typeof import('./src/components/BasicPacks/BaseDatePicker/src/datePick/demo/text.vue')['default'] Time: typeof import('./src/components/BasicPacks/BaseDatePicker/src/datePick/demo/time.vue')['default'] diff --git a/src/assets/css/main.less b/src/assets/css/main.less index fd048d3..57fd767 100644 --- a/src/assets/css/main.less +++ b/src/assets/css/main.less @@ -10,6 +10,7 @@ @import (less) '../../views/base/user/desktop/styles/desktop-user.less'; @import (less) '../../views/base/priceTrigger/desktop/styles/desktop-price-trigger.less'; @import (less) '../../views/base/home/desktop/styles/desktop-home.less'; +@import (less) '../../views/login/desktop/styles/desktop-login.less'; @import (less) '../../layouts/desktop/styles/desktop-inner-pages.less'; html { diff --git a/src/layouts/styles/desktop-shell.less b/src/layouts/styles/desktop-shell.less index 467e24d..2507dc6 100644 --- a/src/layouts/styles/desktop-shell.less +++ b/src/layouts/styles/desktop-shell.less @@ -172,3 +172,10 @@ html.app-layout--desktop .app-splash-screen { left: 0 !important; width: 100vw !important; } + +html.app-layout--desktop .login-page-root { + width: 100%; + height: 100%; + min-height: 0; + overflow: hidden; +} diff --git a/src/views/login/composables/useLoginPage.ts b/src/views/login/composables/useLoginPage.ts new file mode 100644 index 0000000..b9e4e53 --- /dev/null +++ b/src/views/login/composables/useLoginPage.ts @@ -0,0 +1,21 @@ +import { onMounted, ref } from 'vue' +import router from '@/router' + +export function useLoginPage() { + const enterType = ref(false) + + function setEnterType(val: boolean) { + enterType.value = val + } + + onMounted(() => { + if (router.currentRoute.value.query.id) { + enterType.value = true + } + }) + + return { + enterType, + setEnterType, + } +} diff --git a/src/views/login/desktop/DesktopLoginView.vue b/src/views/login/desktop/DesktopLoginView.vue new file mode 100644 index 0000000..c46340c --- /dev/null +++ b/src/views/login/desktop/DesktopLoginView.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/src/views/login/desktop/styles/desktop-login.less b/src/views/login/desktop/styles/desktop-login.less new file mode 100644 index 0000000..be29c96 --- /dev/null +++ b/src/views/login/desktop/styles/desktop-login.less @@ -0,0 +1,114 @@ +html.app-layout--desktop { + .login-page-root { + height: 100%; + min-height: 0; + overflow: hidden; + } + + .dlogin { + position: relative; + display: flex; + align-items: center; + justify-content: center; + min-height: 100vh; + height: 100%; + padding: 32px 24px; + box-sizing: border-box; + overflow-y: auto; + background: #fff; + } + + .dlogin__bg { + position: absolute; + inset: 0; + overflow: hidden; + pointer-events: none; + } + + .dlogin__bg-top, + .dlogin__bg-bottom { + position: absolute; + left: 0; + right: 0; + height: 34%; + overflow: hidden; + } + + .dlogin__bg-top { + top: 0; + } + + .dlogin__bg-bottom { + bottom: 0; + } + + .dlogin__bg-cover { + position: absolute; + inset: 0; + z-index: 1; + width: 100%; + height: 100%; + object-fit: cover; + } + + .dlogin__bg-pattern { + position: absolute; + inset: 0; + width: 100%; + height: 100%; + object-fit: none; + } + + .dlogin__container { + position: relative; + z-index: 2; + display: flex; + flex-direction: column; + align-items: center; + width: 100%; + max-width: 460px; + gap: 20px; + } + + .dlogin__card { + width: 100%; + max-height: calc(100vh - 120px); + padding: 36px 32px 28px; + border-radius: 20px; + background: rgba(255, 255, 255, 0.96); + border: 1px solid rgba(15, 23, 42, 0.06); + box-shadow: + 0 18px 48px rgba(15, 23, 42, 0.08), + 0 2px 8px rgba(15, 23, 42, 0.04); + backdrop-filter: blur(8px); + box-sizing: border-box; + overflow-y: auto; + overscroll-behavior: contain; + } + + .dlogin__form { + width: 100%; + } + + .dlogin__form img { + width: 132px !important; + height: auto; + margin-bottom: 28px !important; + } + + .dlogin__back { + border: none; + background: transparent; + color: @primary-color; + font-size: 14px; + font-weight: 600; + font-family: inherit; + cursor: pointer; + padding: 8px 12px; + transition: opacity 0.2s ease; + + &:hover { + opacity: 0.8; + } + } +} diff --git a/src/views/login/index.vue b/src/views/login/index.vue index ab1fd56..0b65b9e 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -1,49 +1,46 @@ - - diff --git a/src/views/login/mobile/MobileLoginView.vue b/src/views/login/mobile/MobileLoginView.vue new file mode 100644 index 0000000..f39c759 --- /dev/null +++ b/src/views/login/mobile/MobileLoginView.vue @@ -0,0 +1,42 @@ + + +