guhongwei 4 年之前
父節點
當前提交
d4e84c2402

+ 19 - 26
src/router/index.js

@@ -5,17 +5,10 @@ import store from '@/store/index';
 Vue.use(VueRouter);
 
 const routes = [
-  // 登录-测试
-  {
-    path: '/login',
-    name: 'login',
-    meta: { title: '登录', isleftarrow: false },
-    component: () => import('../views/login.vue'),
-  },
   // 首页
   {
     path: '/home/index',
-    name: '',
+    name: 'home_index',
     meta: { title: '首页', isleftarrow: false },
     component: () => import('../views/home/index.vue'),
   },
@@ -129,23 +122,23 @@ const router = new VueRouter({
   base: process.env.NODE_ENV === 'development' ? '' : process.env.VUE_APP_ROUTER,
   routes,
 });
-// router.beforeEach((to, form, next) => {
-//   if (to.name === 'pcenter_center') {
-//     store.commit('setUser');
-//     if (to.name === 'login') {
-//       next();
-//       return;
-//     }
-//     let user = store.state.user;
-//     if (user) {
-//       next();
-//     }
-//     //下面是没登录的情况,需要跳转页面到用户未登录页
-//     else next({ name: 'login' });
-//   } else {
-//     store.commit('setUser');
-//     next();
-//   }
-// });
+router.beforeEach((to, form, next) => {
+  if (to.name === 'user_index') {
+    store.commit('setUser');
+    if (to.name === 'home_index') {
+      next();
+      return;
+    }
+    let user = store.state.user;
+    if (user) {
+      next();
+    }
+    //下面是没登录的情况,需要跳转页面到用户未登录页
+    else next({ name: 'home_index' });
+  } else {
+    store.commit('setUser');
+    next();
+  }
+});
 
 export default router;

+ 19 - 0
src/store/common/mutations.js

@@ -0,0 +1,19 @@
+const jwt = require('jsonwebtoken');
+export const setUser = (state, payload) => {
+  let res = true;
+  // 登陆时;
+  if (payload) {
+    state.user = payload;
+  } else {
+    //已经登陆,切换路由时取出用户信息放在总store中
+    let token = sessionStorage.getItem('token');
+    if (token) {
+      state.user = jwt.decode(token);
+    }
+  }
+  return res;
+};
+export const deleteUser = (state, payload) => {
+  state.user = {};
+  localStorage.removeItem('user');
+};

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

@@ -0,0 +1 @@
+export const user = undefined;

+ 4 - 2
src/store/index.js

@@ -6,12 +6,14 @@ import maarkettype from '@common/store/market/markettype';
 import authUser from './user/auth-user';
 import dock from '@common/store/live/dock';
 import wxchattest from './user/wxchattest';
+import * as ustate from '@/store/common/state';
+import * as umutations from '@/store/common/mutations';
 
 Vue.use(Vuex);
 
 export default new Vuex.Store({
-  state: {},
-  mutations: {},
+  state: { ...ustate },
+  mutations: { ...umutations },
   actions: {},
   modules: {
     marketproduct,

+ 12 - 1
src/store/user/wxchattest.js

@@ -6,7 +6,18 @@ const api = {
   wxchattestInfo: `/api/auth/wxchattest`,
 };
 const state = () => ({});
-const mutations = {};
+const mutations = {
+  setUser(state, payload) {
+    if (payload) {
+      state.user = payload;
+      sessionStorage.setItem('user', JSON.stringify(payload));
+    } else {
+      let user = sessionStorage.getItem('user');
+      if (user) state.user = JSON.parse(user);
+      else return false;
+    }
+  },
+};
 
 const actions = {
   async login({ commit }, payload) {

+ 19 - 3
src/views/home/index.vue

@@ -17,9 +17,10 @@
 </template>
 
 <script>
-import { mapState, createNamespacedHelpers } from 'vuex';
+import { mapState, mapMutations, createNamespacedHelpers } from 'vuex';
 import NavBar from '@/layout/common/topInfo.vue';
 import footInfo from '@/layout/common/footInfo.vue';
+const jwt = require('jsonwebtoken');
 export default {
   name: 'index',
   props: {},
@@ -37,10 +38,25 @@ export default {
       navShow: true,
     };
   },
-  created() {},
-  methods: {},
+  created() {
+    if (this.token) {
+      this.sesstoken();
+    }
+    console.log(this.user);
+  },
+  methods: {
+    ...mapMutations(['setUser']),
+    sesstoken() {
+      sessionStorage.setItem('token', this.token);
+      let user = jwt.decode(this.token);
+      this.setUser(user);
+    },
+  },
   computed: {
     ...mapState(['user']),
+    token() {
+      return this.$route.query.token;
+    },
   },
   mounted() {
     this.title = this.$route.meta.title;

+ 0 - 77
src/views/login.vue

@@ -1,77 +0,0 @@
-<template>
-  <div id="index">
-    <el-row>
-      <el-col :span="24" class="style">
-        <el-col :span="24" class="top">
-          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
-        </el-col>
-        <el-col :span="24" class="main">
-          登录
-          <el-link :underline="false" href="/home/index">首页</el-link>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-import NavBar from '@/layout/common/topInfo.vue';
-const { mapActions: wxchattest } = createNamespacedHelpers('wxchattest');
-export default {
-  name: 'index',
-  props: {},
-  components: {
-    NavBar,
-  },
-  data: function() {
-    return {
-      // 头部标题
-      title: '',
-      // meta为true
-      isleftarrow: '',
-      // 返回
-      navShow: true,
-    };
-  },
-  created() {
-    this.toLogin();
-  },
-  methods: {
-    ...wxchattest(['login']),
-    async toLogin() {
-      let res = await this.login({ redirect_uri: 'http://localhost:8002/login', type: '0', openid: '00' });
-      console.log(res);
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-  },
-  mounted() {
-    this.title = this.$route.meta.title;
-    this.isleftarrow = this.$route.meta.isleftarrow;
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.style {
-  width: 100%;
-  min-height: 667px;
-  position: relative;
-  background-color: #f9fafc;
-}
-.top {
-  height: 46px;
-  overflow: hidden;
-  position: relative;
-  z-index: 999;
-}
-.main {
-  min-height: 570px;
-}
-.foot {
-  position: absolute;
-  bottom: 0;
-}
-</style>

+ 3 - 1
src/views/market/index.vue

@@ -81,7 +81,9 @@ export default {
       active: '1',
     };
   },
-  created() {},
+  created() {
+    console.log(this.user);
+  },
   methods: {},
   computed: {
     ...mapState(['user']),

+ 5 - 0
vue.config.js

@@ -28,6 +28,11 @@ module.exports = {
         target: 'http://free.liaoningdoupo.com',
       },
       '/api': {
+        target: 'http://192.168.1.81:9999',
+        changeOrigin: true,
+        ws: true,
+      },
+      '/apiTest': {
         target: 'http://free.liaoningdoupo.com',
         changeOrigin: true,
         ws: true,