guhongwei 4 éve
szülő
commit
455586e494

+ 19 - 8
src/layout/live/head.vue

@@ -11,7 +11,7 @@
           </p>
           <p class="username">
             <span v-if="user.uid">
-              {{ user.name }}
+              {{ user.name || user.adminuser }}
               <button
                 type="text"
                 class="userCenter"
@@ -23,7 +23,7 @@
               <button type="button" class="logininfo" @click="zhuxiao">注销</button>
             </span>
             <span v-else>
-              {{ user.name }}
+              {{ user.name || user.adminuser }}
               <button type="button" class="logininfo" @click="btnLogin">登录</button>
               <button type="button" class="logininfo" @click="btnLogin">注册</button>
             </span>
@@ -74,6 +74,7 @@
 <script>
 import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions: login } = createNamespacedHelpers('login');
+const { mapActions: dockLogin } = createNamespacedHelpers('dockLogin');
 export default {
   name: 'heads',
   props: {},
@@ -89,6 +90,7 @@ export default {
   },
   methods: {
     ...login({ logout: 'logout', transactiondtetle: 'delete' }),
+    ...dockLogin({ docklogout: 'logout', transactiondtetle: 'delete' }),
     fuwu() {
       this.$router.push({ path: '/live/service' });
     },
@@ -116,12 +118,21 @@ export default {
       }
     },
     async zhuxiao() {
-      this.logout();
-      this.$message({
-        message: '注销成功',
-        type: 'success',
-      });
-      window.location.reload();
+      if (this.user.role === '3' || this.user.role === '8') {
+        this.docklogout();
+        this.$message({
+          message: '注销成功',
+          type: 'success',
+        });
+        window.location.reload();
+      } else {
+        this.logout();
+        this.$message({
+          message: '注销成功',
+          type: 'success',
+        });
+        window.location.reload();
+      }
     },
   },
   computed: {

+ 2 - 1
src/layout/login.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="main">
         <div class="w_1200">
-          <loginMain v-on="$listeners" :form="form" :forms="forms"></loginMain>
+          <loginMain v-on="$listeners" :adminForm="adminForm" :form="form" :forms="forms"></loginMain>
         </div>
       </el-col>
     </el-row>
@@ -15,6 +15,7 @@ export default {
   name: 'login',
   props: {
     info: null, //站点信息
+    adminForm: null, //管理
     form: null, //登录
     forms: null, //注册
   },

+ 6 - 5
src/layout/login/loginMain.vue

@@ -7,15 +7,15 @@
           <el-tabs v-model="activeName" @tab-click="handleClick">
             <el-tab-pane label="管理登录" name="first">
               <el-col :span="24">
-                <el-form ref="form" :model="form" label-width="120px">
+                <el-form :model="adminForm" label-width="120px">
                   <el-form-item label="房间号&手机号">
-                    <el-input v-model="form.room_phone" placeholder="请输入用户/手机号" :minlength="11" :maxlength="11"></el-input>
+                    <el-input v-model="adminForm.room_phone" placeholder="请输入用户/手机号" :minlength="11" :maxlength="11"></el-input>
                   </el-form-item>
                   <el-form-item label="登录密码">
-                    <el-input v-model="form.passwd" placeholder="请输入登录密码" show-password></el-input>
+                    <el-input v-model="adminForm.passwd" placeholder="请输入登录密码" show-password></el-input>
                   </el-form-item>
                   <el-form-item label="用户类别">
-                    <el-radio-group v-model="form.role">
+                    <el-radio-group v-model="adminForm.role">
                       <el-radio label="3">管理用户 </el-radio>
                       <el-radio label="8">VIP用户</el-radio>
                     </el-radio-group>
@@ -178,6 +178,7 @@ import upload from '@/components/uploadone.vue';
 export default {
   name: 'loginMain',
   props: {
+    adminForm: null,
     form: null,
     forms: null,
   },
@@ -269,7 +270,7 @@ export default {
     },
     // 管理登录
     adminSubmit() {
-      this.$emit('adminSubmit', this.form);
+      this.$emit('adminSubmit', this.adminform);
     },
     // 用户登录
     loginSubmit() {

+ 20 - 8
src/layout/userCenter/heads.vue

@@ -10,8 +10,8 @@
             欢迎来到中科在线(长春)技术交易平台
           </p>
           <p>
-            <span v-if="user && user.name"
-              >{{ user.name }}
+            <span v-if="user || user.name || user.adminuser"
+              >{{ user.name || user.adminuser }}
 
               <button type="button" class="logininfo" @click="zhuxiao">注销</button>
             </span>
@@ -37,6 +37,8 @@
 <script>
 import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions: login } = createNamespacedHelpers('login');
+const { mapActions: dockLogin } = createNamespacedHelpers('dockLogin');
+
 export default {
   name: 'heads',
   props: {},
@@ -50,13 +52,23 @@ export default {
   created() {},
   methods: {
     ...login({ logout: 'logout', transactiondtetle: 'delete' }),
+    ...dockLogin({ docklogout: 'logout', transactiondtetle: 'delete' }),
     async zhuxiao() {
-      this.logout();
-      this.$message({
-        message: '注销成功',
-        type: 'success',
-      });
-      this.toLogin();
+      if (this.user.role === '3' || this.user.role === '8') {
+        this.docklogout();
+        this.$message({
+          message: '注销成功',
+          type: 'success',
+        });
+        this.toLogin();
+      } else {
+        this.logout();
+        this.$message({
+          message: '注销成功',
+          type: 'success',
+        });
+        this.toLogin();
+      }
     },
     async toLogin() {
       this.$router.push({ path: '/' });

+ 130 - 0
src/store/dockLogin.js

@@ -0,0 +1,130 @@
+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/live/login`,
+  getUser: `/api/live/token`,
+  logout: '/api/live/logout',
+  getMenu: `/api/auth/user/menus`,
+  updatePassword: '/api/user/pwd_edit',
+};
+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
+    if (isWx) res = await this.$axios.$post(`${api.wxLogin}`, user);
+    else res = await this.$axios.$post(`${api.interface}`, user);
+    const setUser = async (token, commit) => {
+      localStorage.setItem('token', token);
+      let userInfo = await dispatch('toGetUser');
+      return userInfo;
+    };
+    let userInfo = {};
+    if (res.errcode == '0') {
+      userInfo = await setUser(res.data.key, commit);
+      Notification({
+        title: '登录成功',
+        // message: `欢迎,${user.user_name}`,
+        type: 'success',
+        duration: 2000,
+      });
+      return userInfo;
+    } else {
+      if (needReturn) return res;
+      else {
+        Notification({
+          title: '登录失败',
+          message: `失败原因:${res.errmsg || '登陆失败'}`,
+          type: 'error',
+        });
+      }
+    }
+  },
+  async toGetUser({ commit }, payload) {
+    let key = localStorage.getItem('token');
+    if (!key) {
+      if (_.isFunction(payload)) {
+        payload();
+        return;
+      }
+      console.log('游客身份');
+      let user = localStorage.getItem('user');
+      if (user) {
+        commit('setUser', JSON.parse(user), { root: true });
+      } else {
+        let stamp = new Date().getTime();
+        let name = `游客${stamp}`;
+        localStorage.setItem('user', JSON.stringify({ name }));
+        commit('setUser', { name }, { root: true });
+      }
+      return;
+    }
+    console.log('用户');
+    let res = await axios.post(api.getUser, { key: key });
+    let user = {};
+    if (res.data.errcode == '0') {
+      let token = _.get(res, `data.data.token`);
+      if (token) {
+        user = jwt.decode(token);
+        commit('setUser', user, { root: true });
+      }
+    }
+    return user;
+  },
+  async toGetMenu({ commit }, payload) {
+    const res = await this.$axios.$get(api.getMenu, payload);
+    return res;
+  },
+  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,
+};

+ 3 - 0
src/store/index.js

@@ -31,6 +31,8 @@ import wxchattest from './user/wxchattest';
 import users from './user';
 // 新增
 import authUser from './user/auth-user';
+import dockLogin from './dockLogin';
+// 展会登录
 Vue.use(Vuex);
 
 export default new Vuex.Store({
@@ -65,5 +67,6 @@ export default new Vuex.Store({
     productpact,
     wxchattest,
     authUser,
+    dockLogin,
   },
 });

+ 11 - 4
src/views/newlogin.vue

@@ -4,6 +4,7 @@
       :info="info"
       :form="form"
       @submitDate="submitnewLogin"
+      :adminForm="adminForm"
       @adminSubmit="adminSubmit"
       :forms="forms"
       @submitDates="submitRegisters"
@@ -17,6 +18,7 @@ import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
 const { mapActions: mapMarket } = createNamespacedHelpers('market');
 const { mapActions: expertsuser } = createNamespacedHelpers('expertsuser');
 const { mapActions: login } = createNamespacedHelpers('login');
+const { mapActions: dockLogin } = createNamespacedHelpers('dockLogin');
 
 expertsuser;
 export default {
@@ -26,9 +28,13 @@ export default {
   data: () => {
     return {
       info: {},
+      // 管理登录
+      adminForm: {},
+      // 个人
       form: {
         role: '7',
       },
+      // 注册
       forms: {
         role: '7',
       },
@@ -38,11 +44,12 @@ export default {
   methods: {
     ...mapMarket({ userFetch: 'fetch', userCreate: 'create', userUpdate: 'update' }),
     ...login({ toLogin: 'login' }),
+    ...dockLogin({ todockLogin: 'login' }),
     ...expertsuser({ expertsuserCreate: 'create' }),
     // 管理登录
-    async adminSubmit(form) {
-      console.log(form);
-      //   let res = await this.toLogin({ user: form });
+    async adminSubmit() {
+      let res = await this.todockLogin({ user: this.adminForm });
+      console.log(res);
       // if (res.uid) {
       //   history.back();
       // }
@@ -56,7 +63,7 @@ export default {
     },
     // 注册
     async submitRegisters({ data }) {
-      if (data.role == '2' || data.role == '5') {
+      if (data.role == '4' || data.role == '5') {
         let res = await this.userCreate(data);
         let msg = `注册成功,等待管理员审核,方可登录`;
         this.$checkRes(res, msg);