ソースを参照

refactor: 平铺user store

xyh 2 年 前
コミット
40b71becf9

+ 2 - 2
src/apis/menu.ts

@@ -76,12 +76,12 @@ export function getMenuByUserId(
   signal?: AbortSignal,
 ): BaseResult<MenuListData> {
   const userStore = useUserStore();
-  const {user} = storeToRefs(userStore);
+  const {id} = storeToRefs(userStore);
 
   return request({
     method: 'GET',
     url: BASE_URL + '/getUserMenuPc',
-    data: {userId: user.value.id},
+    data: {userId: id.value},
     signal,
   });
 }

+ 3 - 4
src/apis/network.ts

@@ -22,12 +22,11 @@ http.interceptors.request.use(function(config) {
   }
 
   const userStore = useUserStore();
-  const {user} = storeToRefs(userStore);
-  const {id, token} = user.value;
+  const {id, token} = storeToRefs(userStore);
   const {locale} = i18n.global;
 
-  config.headers.token = token;
-  config.headers.userId = id;
+  config.headers.token = token.value;
+  config.headers.userId = id.value;
   /** zh | ko */
   config.headers.locale = locale.value;
 

+ 1 - 1
src/pages/home/user/index.vue

@@ -11,7 +11,7 @@ import Modal from './modal/index.vue';
 defineOptions({name: 'HomeUser'});
 const [isOpen, setOpen] = useToggle();
 const userStore = useUserStore();
-const {realName} = toRefs(userStore.user);
+const {realName} = toRefs(userStore);
 const [visible, {onSelect}] = useDownSelect();
 </script>
 

+ 2 - 2
src/pages/home/user/modal/hooks.ts

@@ -35,7 +35,7 @@ export function useFormState(visible: Ref<boolean>) {
   });
 
   const userStore = useUserStore();
-  const {user} = storeToRefs(userStore);
+  const {id} = storeToRefs(userStore);
   const message = useMessage();
   const {t} = useI18n();
   const {push} = useRouter();
@@ -59,7 +59,7 @@ export function useFormState(visible: Ref<boolean>) {
     if (newPassword !== repeatPassword)
       return setFieldError('repeatPassword', 'home.editpasswordError.validatePassword');
 
-    mutate({id: user.value.id, password: oldPassword, newPassword});
+    mutate({id: id.value, password: oldPassword, newPassword});
   });
 
   watchEffect(function() {

+ 2 - 2
src/routes/index.ts

@@ -68,9 +68,9 @@ router.beforeEach(function(to) {
   const {name} = to;
   if (name) {
     const userStore = useUserStore();
-    const {user} = storeToRefs(userStore);
+    const {token} = storeToRefs(userStore);
 
-    if (!user.value.token) {
+    if (!token.value) {
       // 判断是否登录
       const matchList = [LOGIN_NAME, REGISTER_NAME];
       if (!matchList.includes(name as symbol)) return LOGIN_PATH;

+ 10 - 18
src/stores/user.ts

@@ -3,28 +3,20 @@ import {defineStore} from 'pinia';
 import {useTabStore} from './tab';
 
 type State = {
-  user: {
-    id: string,
-    realName: string,
-    token: string,
-    userName: string,
-    department: string,
-    role: string,
-  }
+  id: string,
+  realName: string,
+  token: string,
 };
 
 type Action = {
-  init: (state: State['user']) => void;
+  init: (state: State) => void;
   logout: () => void;
 };
 
-const defaultUser: State['user'] = Object.freeze({
+const defaultUser: State = Object.freeze({
   id: '',
   realName: '',
   token: '',
-  userName: '',
-  department: '',
-  role: '',
 });
 
 export const useUserStore = defineStore<string, State, any, Action>(
@@ -32,23 +24,23 @@ export const useUserStore = defineStore<string, State, any, Action>(
   {
     state() {
       const userLocalStorage = sessionStorage.getItem(USER_STORAGE_KEY);
-      const user: State['user'] = {...defaultUser};
+      const user: State = {...defaultUser};
       if (userLocalStorage) {
         Object.assign(
           user,
-          JSON.parse(userLocalStorage) as State['user'],
+          JSON.parse(userLocalStorage) as State,
         );
       }
 
-      return {user};
+      return user;
     },
     actions: {
       init(state) {
-        this.user = state;
+        this.$patch(state);
       },
       logout() {
         // 清空用户信息
-        this.user = {...defaultUser};
+        this.$patch({...defaultUser});
         // 清空tab信息
         const tabStore = useTabStore();
         tabStore.clear();