Sfoglia il codice sorgente

feat: 门户登录接入

Jinyao 5 anni fa
parent
commit
4e212cd543
4 ha cambiato i file con 75 aggiunte e 0 eliminazioni
  1. 17 0
      src/store/dispatchers.ts
  2. 24 0
      src/store/modules/user.ts
  3. 27 0
      src/store/typings.ts
  4. 7 0
      src/utils/token.ts

+ 17 - 0
src/store/dispatchers.ts

@@ -0,0 +1,17 @@
+import store from './index';
+
+export const updateToken = (token: string) => {
+  store.dispatch('updateToken', {
+    token,
+  });
+};
+
+export const destroyToken = () => {
+  store.dispatch('destoryToken');
+};
+
+export const changeGroup = (groupId: string) => {
+  store.dispatch('changeGroup', {
+    groupId,
+  });
+};

+ 24 - 0
src/store/modules/user.ts

@@ -0,0 +1,24 @@
+import { ActionTree, Module, MutationTree } from 'vuex';
+import { RootState, UserState } from '../typings';
+
+const GUEST: UserState = {
+  isUserLoggedIn: false,
+  username: 'GUEST',
+  groupList: [],
+  projectListOfGroup: [],
+  token: '',
+};
+
+const actions: ActionTree<UserState, RootState> = {
+
+};
+
+const mutations: MutationTree<UserState> = {
+
+};
+
+export const user: Module<UserState, RootState> = {
+  state: () => GUEST,
+  actions,
+  mutations,
+};

+ 27 - 0
src/store/typings.ts

@@ -0,0 +1,27 @@
+type groupId = number;
+type projectId = number;
+
+export interface RootState {
+  currentGroup: groupId;
+  currentProject: projectId;
+  token: string;
+}
+
+export interface UserState {
+  isUserLoggedIn: boolean;
+  username: string;
+  groupList: Array<groupId>;
+  projectListOfGroup: Record<groupId, Array<projectId>>;
+}
+
+export interface ChangeGroupPayload {
+  groupId: groupId;
+}
+
+export interface ChangeProjectPayload {
+  projectId: projectId;
+}
+
+export interface TokenPayload {
+  token: string;
+}

+ 7 - 0
src/utils/token.ts

@@ -0,0 +1,7 @@
+export const saveToken = (token: string) => {
+  localStorage.setItem('token', token);
+};
+
+export const destoryToken = () => {
+  localStorage.removeItem('token');
+};