guhongwei 5 سال پیش
والد
کامیت
1d174bcd0b
8فایلهای تغییر یافته به همراه131 افزوده شده و 20 حذف شده
  1. 21 4
      src/router/index.js
  2. 2 0
      src/store/index.js
  3. 90 0
      src/store/login.js
  4. 1 1
      src/store/user/mutations.js
  5. 0 1
      src/store/user/state.js
  6. 5 10
      src/views/communication/index.vue
  7. 12 3
      src/views/login.vue
  8. 0 1
      src/views/register.vue

+ 21 - 4
src/router/index.js

@@ -1,5 +1,6 @@
 import Vue from 'vue';
 import Vue from 'vue';
 import VueRouter from 'vue-router';
 import VueRouter from 'vue-router';
+import store from '@/store/index';
 
 
 Vue.use(VueRouter);
 Vue.use(VueRouter);
 
 
@@ -12,6 +13,7 @@ const routes = [
   // 登录
   // 登录
   {
   {
     path: '/login',
     path: '/login',
+    name: 'login',
     meta: { title: '登录', subSite: true },
     meta: { title: '登录', subSite: true },
     component: () => import('../views/login.vue'),
     component: () => import('../views/login.vue'),
   },
   },
@@ -67,7 +69,7 @@ const routes = [
   // 个人中心
   // 个人中心
   {
   {
     path: '/pcenter/index',
     path: '/pcenter/index',
-    name: '个人中心',
+    name: 'pcenter_center',
     component: () => import('../views/pcenter/index.vue'),
     component: () => import('../views/pcenter/index.vue'),
   },
   },
 ];
 ];
@@ -77,8 +79,23 @@ const router = new VueRouter({
   base: process.env.NODE_ENV === 'development' ? '' : process.env.VUE_APP_ROUTER,
   base: process.env.NODE_ENV === 'development' ? '' : process.env.VUE_APP_ROUTER,
   routes,
   routes,
 });
 });
-// const router = new VueRouter({
-//   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();
+  }
+});
 
 
 export default router;
 export default router;

+ 2 - 0
src/store/index.js

@@ -5,6 +5,7 @@ import * as umutations from './user/mutations';
 import registers from './registers';
 import registers from './registers';
 import department from './department';
 import department from './department';
 import level from './level';
 import level from './level';
+import login from './login';
 
 
 Vue.use(Vuex);
 Vue.use(Vuex);
 
 
@@ -14,6 +15,7 @@ export default new Vuex.Store({
   actions: {},
   actions: {},
   modules: {
   modules: {
     registers,
     registers,
+    login,
     department,
     department,
     level,
     level,
   },
   },

+ 90 - 0
src/store/login.js

@@ -0,0 +1,90 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import axios from 'axios';
+import _ from 'lodash';
+import { Notification } from 'element-ui';
+const jwt = require('jsonwebtoken');
+Vue.use(Vuex);
+const api = {
+  interface: `/api/count/user/login`,
+  logout: '/api/count/user/logout',
+  updatePassword: '/api/count/user/uppasswd',
+};
+const state = () => ({});
+const mutations = {};
+
+const actions = {
+  /**
+    user:Object required 登陆信息 
+    router:router 如果跳转就传
+    path:String 跳转到的路由位置
+    needReturn: Boolean 是否返回结果
+    typeCheck: Boolean 是否检查身份对应匹配的前端项目
+    isWx: Boolean 是否是微信登陆
+    needNotice:Boolean 是否需要提示
+   */
+  async login({ commit, dispatch }, { user, router, path = '/', needReturn = false, typeCheck = false, isWx = false, needNotice = true }) {
+    let res;
+    //wx登陆,openid存在,user中是openid和qrcode;正常登陆,user中是mobile和passwd
+    res = await this.$axios.$post(`${api.interface}`, user);
+    const setUser = async (token, commit) => {
+      localStorage.setItem('token', token);
+    };
+    let userInfo = {};
+    if (res.errcode == '0') {
+      setUser(res.data, commit);
+      Notification({
+        title: '登录成功',
+        type: 'success',
+        duration: 2000,
+      });
+      return true;
+    } else {
+      if (needReturn) return res;
+      else {
+        Notification({
+          title: '登录失败',
+          message: `失败原因:${res.errmsg || '登陆失败'}`,
+          type: 'error',
+        });
+        return false;
+      }
+    }
+  },
+  async logout({ commit }, payload) {
+    let key = localStorage.removeItem('token');
+    const res = await this.$axios.$post(api.logout, { key: key });
+    commit('deleteUser');
+  },
+  async update({ commit }, payload) {
+    let res = await this.$axios.$post(`${api.updatePassword}`, {
+      data: payload,
+    });
+    return res;
+  },
+  async bind({ commit }, payload) {
+    let res = await this.$axios.$post(`${api.bind}`, payload);
+    return res;
+  },
+  async userBind({ commit }, payload) {
+    let res = await this.$axios.$post(`${api.userBind}`, payload);
+    return res;
+  },
+  async getQrcode({ commit }, payload) {
+    let res = await this.$axios.$get(`${api.connection}`);
+    if (res.errcode === 0) return res.data;
+    else {
+      console.warn('请求qrcode失败');
+    }
+  },
+  async wxCheck({ commit }, payload) {
+    let res = await this.$axios.$post(`${api.wxCheck}`, payload);
+    return res;
+  },
+};
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions,
+};

+ 1 - 1
src/store/user/mutations.js

@@ -1,7 +1,7 @@
 const jwt = require('jsonwebtoken');
 const jwt = require('jsonwebtoken');
 export const setUser = (state, payload) => {
 export const setUser = (state, payload) => {
   let res = true;
   let res = true;
-  //登陆时
+  // 登陆时;
   if (payload) {
   if (payload) {
     state.token = payload;
     state.token = payload;
   } else {
   } else {

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

@@ -1,2 +1 @@
 export const user = {};
 export const user = {};
-export const menuList = [];

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 5 - 10
src/views/communication/index.vue


+ 12 - 3
src/views/login.vue

@@ -48,6 +48,7 @@ import top from '@/layout/common/top.vue';
 import menus from '@/layout/common/menus.vue';
 import menus from '@/layout/common/menus.vue';
 import foot from '@/layout/common/foot.vue';
 import foot from '@/layout/common/foot.vue';
 import { mapState, createNamespacedHelpers } from 'vuex';
 import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: login } = createNamespacedHelpers('login');
 export default {
 export default {
   name: 'login',
   name: 'login',
   props: {},
   props: {},
@@ -65,12 +66,20 @@ export default {
       },
       },
     };
     };
   },
   },
-  created() {},
+  created() {
+    console.log(this.user);
+  },
   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 });
+          if (res) {
+            this.$router.push({ path: '/' });
+          } else {
+            // this.$router.push({ path: '/login' });
+          }
         } else {
         } else {
           console.log('error submit!!');
           console.log('error submit!!');
           return false;
           return false;

+ 0 - 1
src/views/register.vue

@@ -240,7 +240,6 @@ export default {
             this.$router.push({ path: '/login' });
             this.$router.push({ path: '/login' });
           }
           }
         } else {
         } else {
-          console.log('error submit!!');
           return false;
           return false;
         }
         }
       });
       });