Parcourir la source

Merge branch 'feature/25-login' into feature/31-carousal

zlong il y a 1 an
Parent
commit
5f9e951aa8

+ 1 - 1
.env

@@ -1,3 +1,3 @@
 VITE_ENABLE_MOCK=false
 VITE_API_PREFIX=/api
-VITE_PROXY_ENDPOINT=https://bright.yilibili.com/api/
+VITE_PROXY_ENDPOINT=https://bright.yilibili.com/api

+ 1 - 1
index.html

@@ -4,7 +4,7 @@
     <meta charset="UTF-8">
     <link rel="icon" href="/favicon.ico">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Yili Admin</title>
+    <title>布兰德后台管理</title>
   </head>
   <body>
     <div id="app"></div>

+ 9 - 0
pnpm-lock.yaml

@@ -557,46 +557,55 @@ packages:
     resolution: {integrity: sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==}
     cpu: [arm]
     os: [linux]
+    libc: [glibc]
 
   '@rollup/rollup-linux-arm-musleabihf@4.22.4':
     resolution: {integrity: sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==}
     cpu: [arm]
     os: [linux]
+    libc: [musl]
 
   '@rollup/rollup-linux-arm64-gnu@4.22.4':
     resolution: {integrity: sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==}
     cpu: [arm64]
     os: [linux]
+    libc: [glibc]
 
   '@rollup/rollup-linux-arm64-musl@4.22.4':
     resolution: {integrity: sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==}
     cpu: [arm64]
     os: [linux]
+    libc: [musl]
 
   '@rollup/rollup-linux-powerpc64le-gnu@4.22.4':
     resolution: {integrity: sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==}
     cpu: [ppc64]
     os: [linux]
+    libc: [glibc]
 
   '@rollup/rollup-linux-riscv64-gnu@4.22.4':
     resolution: {integrity: sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==}
     cpu: [riscv64]
     os: [linux]
+    libc: [glibc]
 
   '@rollup/rollup-linux-s390x-gnu@4.22.4':
     resolution: {integrity: sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==}
     cpu: [s390x]
     os: [linux]
+    libc: [glibc]
 
   '@rollup/rollup-linux-x64-gnu@4.22.4':
     resolution: {integrity: sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==}
     cpu: [x64]
     os: [linux]
+    libc: [glibc]
 
   '@rollup/rollup-linux-x64-musl@4.22.4':
     resolution: {integrity: sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==}
     cpu: [x64]
     os: [linux]
+    libc: [musl]
 
   '@rollup/rollup-win32-arm64-msvc@4.22.4':
     resolution: {integrity: sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==}

+ 3 - 7
src/layouts/components/AppLogo.vue

@@ -1,14 +1,10 @@
-<script setup lang="ts">
-
-</script>
+<script setup lang="ts"></script>
 
 <template>
   <div class="w-full h-[56px] flex items-center text-2xl cursor-pointer gap-2 font-bold">
     <img src="@/assets/icons/logo.svg" class="w-[32px]" />
-    Yili Admin
+    布兰德后台
   </div>
 </template>
 
-<style scoped>
-
-</style>
+<style scoped></style>

+ 4 - 18
src/layouts/components/Header.vue

@@ -1,25 +1,11 @@
 <script setup lang="ts">
-
 import UserArea from '@/layouts/components/UserArea.vue'
-import { useRouter } from 'vue-router'
-
-const router = useRouter()
 </script>
 
 <template>
-    <div class="w-full h-full flex items-center justify-between px-6">
-      <TSpace>
-<!--        <TButton variant="text" shape="square">-->
-<!--          <template #icon> <ViewListIcon /></template>-->
-<!--        </TButton>-->
-        <TButton variant="text" @click="() => router.push({ name: 'platform-manage'
-        })">切换平台</TButton>
-      </TSpace>
-
-      <UserArea></UserArea>
-    </div>
+  <div class="w-full h-full flex items-center justify-end px-6">
+    <UserArea></UserArea>
+  </div>
 </template>
 
-<style scoped>
-
-</style>
+<style scoped></style>

+ 4 - 5
src/layouts/components/UserArea.vue

@@ -1,9 +1,10 @@
 <script setup lang="ts">
-
 import { ChevronDownIcon } from 'tdesign-icons-vue-next'
 import type { DropdownOption } from 'tdesign-vue-next'
 import { useAppStore } from '@/stores/app'
+import type { User } from '@/models/user'
 const appStore = useAppStore()
+const currentUser: User = appStore.currentUser
 const options: DropdownOption[] = [
   {
     content: '退出登录',
@@ -20,7 +21,7 @@ const options: DropdownOption[] = [
       <TButton variant="text">
         <div class="flex gap-2 items-center">
           <TAvatar size="24px" image="https://tdesign.gtimg.com/site/avatar.jpg"></TAvatar>
-          依力
+          {{ currentUser.username }}
           <ChevronDownIcon />
         </div>
       </TButton>
@@ -28,6 +29,4 @@ const options: DropdownOption[] = [
   </div>
 </template>
 
-<style scoped>
-
-</style>
+<style scoped></style>

+ 9 - 2
src/model/base.ts

@@ -1,11 +1,18 @@
+import type { User } from "./user";
+
 export interface ErrorResponse {
   code: number;
   message: string;
 }
 export interface BaseModel {
   id: number
-  createdTime: Date
-  updateTime: Date
+  createdTime: string
+  updateTime: string
+}
+
+export interface AuditBaseModel extends BaseModel {
+  createBy: User
+  updateBy: User
 }
 
 export interface Paging {

+ 6 - 9
src/model/user.ts

@@ -1,15 +1,12 @@
-import type { BaseFilterRequest, BaseModel } from '@/model/base'
-import type { Role } from '@/model/role'
+import type { BaseFilterRequest, AuditBaseModel } from '@/model/base'
 
-export interface User extends BaseModel{
-  name: string
-  email: string
-  avatar: string
-  roles: Role[]
-  permissions: string[]
+export interface User extends AuditBaseModel{
+  username: string
+  locked: boolean
+  enabled: boolean
 }
 
 
 export interface UserSearchFilter extends BaseFilterRequest {
-  name?: string
+  username?: string
 }

+ 4 - 16
src/pages/common/login.vue

@@ -1,6 +1,5 @@
 <script setup lang="ts">
 import Background from '@/pages/common/components/Background.vue'
-import Copyright from '@/components/Copyright.vue'
 import { LockOnIcon, UserIcon } from 'tdesign-icons-vue-next'
 import { reactive, ref } from 'vue'
 import type { CreateTokenRequest } from '@/model/token'
@@ -8,12 +7,10 @@ import { MessagePlugin } from 'tdesign-vue-next'
 import { useAppStore } from '@/stores/app'
 
 const loginForm = reactive<CreateTokenRequest>({
-  username: 'admin',
-  password: 'admin123'
+  password: '',
+  username: ''
 })
 
-const canRegister = ref(false)
-
 const loading = ref(false)
 const appStore = useAppStore()
 
@@ -28,19 +25,15 @@ const handleLogin = async () => {
     loading.value = false
   }
 }
-
 </script>
 
 <template>
   <div class="w-[100vw] h-[100vh] px-20 flex items-center">
     <Background></Background>
     <div class="w-[400px]">
-      <div class="text-4xl font-bold mb-12">欢迎到<br />Yili Admin</div>
-      <div class="mb-12 flex items-center gap-2" v-if="canRegister">
-        买有账号?<TLink>注册新账号</TLink>
-      </div>
+      <div class="text-4xl font-bold mb-12">欢迎到<br />布兰德后台管理系统</div>
       <div class="flex flex-col gap-6 mb-11">
-        <TInput size="large" placeholder="用户名/邮箱" v-model="loginForm.username" clearable >
+        <TInput size="large" placeholder="账户" v-model="loginForm.username" clearable>
           <template #prefix-icon>
             <UserIcon></UserIcon>
           </template>
@@ -57,15 +50,10 @@ const handleLogin = async () => {
             <LockOnIcon></LockOnIcon>
           </template>
         </TInput>
-        <div class="flex justify-between items-center">
-          <TCheckbox>记住账号</TCheckbox>
-          <TLink>忘记密码?</TLink>
-        </div>
       </div>
       <TButton size="large" :block="true" @click="handleLogin" :loading="loading">
         {{ loading ? '登录中' : '登录' }}
       </TButton>
-      <Copyright />
     </div>
   </div>
 </template>

+ 1 - 1
src/router/index.ts

@@ -33,7 +33,7 @@ const router = createRouter({
       component: Layout,
       path: '/',
       redirect: {
-        name: 'dashboard'
+        name: 'classify'
       },
       children: asyncRoutes
     },