Procházet zdrojové kódy

新增暂未登录UI

sunsheng před 2 měsíci
rodič
revize
63c26c7b1e

+ 3 - 2
Web/src/pages/page-web/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="login flex-column flex-justify-center flex-align-center m0 b0">
+  <div v-if="false" class="login flex-column flex-justify-center flex-align-center m0 b0">
     <a-image :preview="false" style="width: 17vw; height: 10vw; margin-bottom: 50px" :src="djiLogo" />
     <!-- <a-image :preview="false" style="width: 17vw; height: 17vw; margin-bottom: 50px" :src="jkecLogo" /> -->
     <p class="fz35 pb30" style="color: #2d8cf0">无人机管理平台</p>
@@ -25,6 +25,7 @@
       </a-form-item>
     </a-form>
   </div>
+  <notLogged></notLogged>
 </template>
 
 <script lang="ts" setup>
@@ -36,7 +37,7 @@ import { reactive, computed, UnwrapRef } from 'vue'
 import { login, LoginBody } from '/@/api/manage'
 import { getRoot } from '/@/root'
 import { ELocalStorageKey, ERouterName, EUserType } from '/@/types'
-
+import notLogged from './notLogged.vue'
 const root = getRoot()
 
 const formState: UnwrapRef<LoginBody> = reactive({

+ 179 - 0
Web/src/pages/page-web/notLogged.vue

@@ -0,0 +1,179 @@
+<template>
+    <div class="notLo">
+        <div class="container">
+            <div class="card">
+                <div class="icon-container">
+                    <img :src='jkecLogo' class="icon-containe-img"/>
+                </div>
+
+                <h1 class="title">暂未登录</h1>
+
+                <p class="message">
+                    您当前尚未登录系统,请登录后<br>
+                    访问完整功能和个性化内容
+                </p>
+
+                <div class="divider"></div>
+            </div>
+        </div>
+    </div>
+
+</template>
+<script setup lang='ts'>
+import { ref, reactive } from 'vue'
+import jkecLogo from '/@/assets/icons/jkec_logo.png'
+
+</script>
+<style scoped lang='scss'>
+* {
+    margin: 0;
+    padding: 0;
+    box-sizing: border-box;
+    font-family: 'Inter', 'Segoe UI', Roboto, sans-serif;
+}
+
+body {
+    background-color: #f8fafc;
+    min-height: 100vh;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    padding: 2rem;
+    background-image:
+        radial-gradient(circle at 10% 20%, rgba(30, 48, 80, 0.04) 0%, transparent 30%),
+        radial-gradient(circle at 90% 80%, rgba(30, 48, 80, 0.04) 0%, transparent 30%);
+}
+
+/* 主容器样式 */
+.notLo{
+    width: 100%;
+    height: 100%;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+.container {
+    width: 100%;
+    max-width: 550px;
+}
+
+.card {
+    background: #ffffff;
+    border-radius: 28px;
+    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.07);
+    padding: 5rem 3.5rem;
+    text-align: center;
+    position: relative;
+    overflow: hidden;
+    transition: transform 0.3s ease;
+}
+
+.card:hover {
+    transform: translateY(-5px);
+}
+
+/* 装饰元素 */
+.card::before {
+    content: '';
+    position: absolute;
+    top: -150px;
+    right: -150px;
+    width: 350px;
+    height: 350px;
+    background: radial-gradient(circle, rgba(30, 64, 175, 0.08) 0%, rgba(30, 64, 175, 0) 70%);
+    border-radius: 50%;
+    z-index: 0;
+}
+
+.card::after {
+    content: '';
+    position: absolute;
+    bottom: -120px;
+    left: -120px;
+    width: 300px;
+    height: 300px;
+    background: radial-gradient(circle, rgba(59, 130, 246, 0.06) 0%, rgba(59, 130, 246, 0) 70%);
+    border-radius: 50%;
+    z-index: 0;
+}
+
+/* 图标样式 */
+.icon-container {
+    width: 130px;
+    height: 130px;
+    margin: 0 auto 3rem;
+    // background: linear-gradient(135deg, rgba(30, 64, 175, 0.1) 0%, rgba(59, 130, 246, 0.1) 100%);
+    border-radius: 50%;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    position: relative;
+    z-index: 1;
+    // box-shadow: 0 10px 30px rgba(0, 0, 0, 0.06);
+}
+.icon-containe-img{
+    width: 100%;
+    height: 100%;
+}
+.user-icon {
+    width: 50px;
+    height: 50px;
+    color: #1e40af;
+    font-size: 64px;
+    opacity: 0.95;
+}
+
+/* 文字样式 */
+.title {
+    font-size: clamp(2.2rem, 6vw, 3.2rem);
+    font-weight: 700;
+    color: #1e293b;
+    margin-bottom: 1.5rem;
+    position: relative;
+    z-index: 1;
+    letter-spacing: -0.6px;
+    line-height: 1.1;
+}
+
+.message {
+    font-size: clamp(1.1rem, 3vw, 1.35rem);
+    color: #64748b;
+    line-height: 1.7;
+    max-width: 360px;
+    margin: 0 auto;
+    position: relative;
+    z-index: 1;
+}
+
+/* 底部装饰线 */
+.divider {
+    width: 80px;
+    height: 3px;
+    background: linear-gradient(90deg, rgba(30, 64, 175, 0) 0%, rgba(30, 64, 175, 0.3) 50%, rgba(30, 64, 175, 0) 100%);
+    margin: 4rem auto 0;
+    position: relative;
+    z-index: 1;
+}
+
+/* 响应式调整 */
+@media (max-width: 640px) {
+    .card {
+        padding: 4rem 2.5rem;
+        border-radius: 24px;
+    }
+
+    .icon-container {
+        width: 120px;
+        height: 120px;
+        margin-bottom: 2.5rem;
+    }
+
+    .user-icon {
+        font-size: 56px;
+    }
+
+    .divider {
+        margin-top: 3.5rem;
+    }
+}
+</style>