guhongwei 4 년 전
부모
커밋
2730604983
4개의 변경된 파일44개의 추가작업 그리고 4개의 파일을 삭제
  1. 4 2
      src/store/index.js
  2. 33 0
      src/store/user/mutations.js
  3. 1 0
      src/store/user/state.js
  4. 6 2
      src/views/login.vue

+ 4 - 2
src/store/index.js

@@ -4,12 +4,14 @@ import login from './login';
 import roomuser from './roomuser';
 import roomuser from './roomuser';
 import role from './role';
 import role from './role';
 import room from './room';
 import room from './room';
+import * as ustate from './user/state';
+import * as umutations from './user/mutations';
 
 
 Vue.use(Vuex);
 Vue.use(Vuex);
 
 
 export default new Vuex.Store({
 export default new Vuex.Store({
-  state: {},
-  mutations: {},
+  state: { ...ustate },
+  mutations: { ...umutations },
   actions: {},
   actions: {},
   modules: {
   modules: {
     login,
     login,

+ 33 - 0
src/store/user/mutations.js

@@ -0,0 +1,33 @@
+const jwt = require('jsonwebtoken');
+export const setUser = (state, payload) => {
+  let res = true;
+  //登陆时
+  if (payload) {
+    state.token = payload;
+  } else {
+    //已经登陆,切换路由时取出用户信息放在总store中
+    let token = localStorage.getItem('token');
+    if (token && token !== 'guest') {
+      state.user = jwt.decode(token);
+    } else if (token && token == 'guest') {
+      let user = localStorage.getItem('user');
+      state.user = JSON.parse(user);
+    } else {
+      let timestamp = new Date().getTime();
+      let user = {
+        // id: `guest${timestamp}`,
+        name: `游客${timestamp}`,
+      };
+      state.user = user;
+      localStorage.setItem('token', 'guest');
+      localStorage.setItem('user', JSON.stringify(user));
+      console.warn('游客身份');
+    }
+  }
+  return res;
+};
+
+export const deleteUser = (state, payload) => {
+  state.user = {};
+  localStorage.removeItem('user');
+};

+ 1 - 0
src/store/user/state.js

@@ -0,0 +1 @@
+export const user = {};

+ 6 - 2
src/views/login.vue

@@ -29,6 +29,8 @@
 </template>
 </template>
 
 
 <script>
 <script>
+import { mapActions, mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: login } = createNamespacedHelpers('login');
 export default {
 export default {
   name: 'login',
   name: 'login',
   props: {},
   props: {},
@@ -43,10 +45,12 @@ export default {
   created() {},
   created() {},
   computed: {},
   computed: {},
   methods: {
   methods: {
+    ...login({ toLogin: 'login' }),
     submitForm(formName) {
     submitForm(formName) {
-      this.$refs[formName].validate(valid => {
+      this.$refs[formName].validate(async valid => {
         if (valid) {
         if (valid) {
-          alert('submit!');
+          let res = await this.toLogin({ user: this.form });
+          console.log(res);
         } else {
         } else {
           console.log('error submit!!');
           console.log('error submit!!');
           return false;
           return false;