Browse Source

🐞 fix(store): 全局状态保存

陈雪 3 weeks ago
parent
commit
63bdbbcef2
3 changed files with 98 additions and 90 deletions
  1. 36 28
      src/renderer/router/index.js
  2. 62 61
      src/renderer/store/user.js
  3. 0 1
      src/renderer/views/login/index.vue

+ 36 - 28
src/renderer/router/index.js

@@ -3,36 +3,44 @@ import Layout from '@/layout'
 // 引入路由表
 import asyncRouterMap from './constantRouterMap'
 
-export const constantRouterMap = [{
-  path: '/',
-  component: Layout,
-  redirect: '/dashboard',
-  name: '主页',
-  hidden: true,
-  children: [{
-    path: 'dashboard',
-    name: '总览',
-    component: () => import('@/views/home')
-  }]
-}, {
-  path: '/login',
-  component: () => import('@/views/login'),
-  hidden: true
-}, {
-  path: '/cashier',
-  component: () => import('@/views/cashier'),
-  hidden: true
-} , {
-  path: '/setting',
-  component: () => import('@/views/setting'),
-  hidden: true
-}]
+export const constantRouterMap = [
+  {
+    path: '/',
+    component: Layout,
+    redirect: '/cashier',
+    name: '主页',
+    hidden: true,
+    children: [
+      {
+        path: '/dashboard',
+        name: '总览',
+        component: () => import('@/views/home'),
+      },
+    ],
+  },
+  {
+    path: '/login',
+    component: () => import('@/views/login'),
+    hidden: true,
+  },
+  {
+    path: '/cashier',
+    component: () => import('@/views/cashier'),
+    hidden: true,
+  },
+  {
+    path: '/setting',
+    component: () => import('@/views/setting'),
+    hidden: true,
+  },
+]
 export const asyncRoutes = asyncRouterMap
 
-const createRouter = () => new Router({
-  scrollBehavior: () => ({ y: 0 }),
-  routes: constantRouterMap
-})
+const createRouter = () =>
+  new Router({
+    scrollBehavior: () => ({ y: 0 }),
+    routes: constantRouterMap,
+  })
 
 export function resetRouter() {
   const newRouter = createRouter()

+ 62 - 61
src/renderer/store/user.js

@@ -4,69 +4,70 @@ import { usePermissionStore } from './permission'
 import { login, getInfo } from '@/api/login'
 
 const TokenKey = 'Access-Token'
-const store = () => {
-    return {
-        token: JSON.parse(localStorage.getItem(TokenKey)),
-        name: JSON.parse(localStorage.getItem('name')),
-        roles: JSON.parse(localStorage.getItem('roles'))
-    }
-}
 
 export const useUserStore = defineStore({
-    id: 'user',
-    store,
-    actions: {
-        login(data) {
-            return new Promise((resolve, reject) => {
-                const { username } = data;
-                const { password } = data;
-                const { captchaCode } = data;
-                const { uuid } = data;
+  id: 'user',
+  state: () => ({
+    token: localStorage.getItem(TokenKey) || '',
+    name: localStorage.getItem('name') || '',
+    roles: localStorage.getItem('roles') ? JSON.parse(localStorage.getItem('roles')) : [],
+  }),
+  actions: {
+    login(data) {
+      return new Promise((resolve, reject) => {
+        const { username } = data
+        const { password } = data
+        const { captchaCode } = data
+        const { uuid } = data
 
-                login(username, password, captchaCode, uuid).then(res => {
-                    console.log('登录返回信息:', res.data);
-                    localStorage.setItem(TokenKey, res.data.token);
-                    this.token = res.data.token;
-                    localStorage.setItem("roles", JSON.stringify(["admin"]));
-                    localStorage.setItem("name", "Super Admin");
-                    this.name = "Super Admin";
-                    this.roles = ["admin"];
+        login(username, password, captchaCode, uuid)
+          .then((res) => {
+            console.log('登录返回信息:', res.data)
+            localStorage.setItem(TokenKey, res.data.token)
+            this.token = res.data.token
+            localStorage.setItem('roles', JSON.stringify(['admin']))
+            localStorage.setItem('name', 'Super Admin')
+            this.name = 'Super Admin'
+            this.roles = ['admin']
 
-                    resolve()
-                }).catch(error => {
-                    reject(error);
-                })
-            })
-
-        },
-        logOut() {
-            return new Promise((resolve, reject) => {
-                const { ResetRoutes } = usePermissionStore()
-                localStorage.setItem(TokenKey, "");
-                localStorage.setItem("roles", JSON.stringify([]));
-                localStorage.setItem("name", "");
-                this.token = "";
-                this.name = "";
-                this.roles = [];
-                ResetRoutes();
-                resetRouter();
-                resolve();
-            })
-        },
-        GetUserInfo() {
-            return new Promise((resolve, reject) => {
-                getInfo().then(res => {
-                    const user = res.data.accountInfo;
-                    localStorage.setItem("name", user.accountName);
-                    localStorage.setItem("permissions", JSON.stringify(res.data.permissions));
-                    localStorage.setItem("roles", JSON.stringify(res.data.roles));
-                    this.name = user.accountName;
-                    this.roles = res.data.roles;
-                    resolve(this.roles);
-                }).catch(error => {
-                    reject(error)
-                })
-            })
-        }
-    }
+            resolve()
+          })
+          .catch((error) => {
+            reject(error)
+          })
+      })
+    },
+    logOut() {
+      return new Promise((resolve, reject) => {
+        const { ResetRoutes } = usePermissionStore()
+        localStorage.removeItem(TokenKey)
+        localStorage.removeItem('roles')
+        localStorage.removeItem('name')
+        this.token = ''
+        this.name = ''
+        this.roles = []
+        ResetRoutes()
+        resetRouter()
+        resolve()
+      })
+    },
+    GetUserInfo() {
+      return new Promise((resolve, reject) => {
+        getInfo()
+          .then((res) => {
+            const user = res.data.accountInfo
+            localStorage.setItem('name', user.accountName)
+            localStorage.setItem('permissions', JSON.stringify(res.data.permissions))
+            localStorage.setItem('roles', JSON.stringify(res.data.roles))
+            this.name = user.accountName
+            this.roles = res.data.roles
+            this.permissions = res.data.permissions
+            resolve(this.roles)
+          })
+          .catch((error) => {
+            reject(error)
+          })
+      })
+    },
+  },
 })

+ 0 - 1
src/renderer/views/login/index.vue

@@ -136,7 +136,6 @@ export default {
             .then(() => {
               app.loading = false
               console.log('登录成功了!')
-              app.$router.push({ path: '/cashier' }).catch(() => {})
               router.push({ path: '/' }).catch((err) => {
                 console.log('跳转失败...', err)
               })