hzj18279462576@163.com 3 роки тому
батько
коміт
b29dc5c759

+ 5 - 0
admin/package-lock.json

@@ -8277,6 +8277,11 @@
         "nopt": "^5.0.0"
       }
     },
+    "js-cookie": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.1.tgz",
+      "integrity": "sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw=="
+    },
     "js-tokens": {
       "version": "3.0.2",
       "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-3.0.2.tgz",

+ 1 - 0
admin/package.json

@@ -18,6 +18,7 @@
     "better-scroll": "^2.4.2",
     "element-ui": "^2.15.2",
     "file-saver": "^2.0.5",
+    "js-cookie": "^3.0.1",
     "jsencrypt": "^3.2.1",
     "moment": "^2.29.4",
     "svg-sprite-loader": "^4.3.0",

+ 72 - 0
admin/src/api/acl/permission.js

@@ -0,0 +1,72 @@
+import request from '@/utils/request'
+
+/* 
+权限管理相关的API请求函数
+*/
+const api_name = '/admin/acl/permission'
+
+export default {
+  
+  /* 
+  获取权限(菜单/功能)列表
+  */
+  getPermissionList() {
+    return request({
+      url: `${api_name}`,
+      method: 'get'
+    })
+  },
+  
+  /* 
+  删除一个权限项
+  */
+  removePermission(id) {
+    return request({
+      url: `${api_name}/remove/${id}`,
+      method: "delete"
+    })
+  },
+  
+  /* 
+  保存一个权限项
+  */
+  addPermission(permission) {
+    return request({
+      url: `${api_name}/save`,
+      method: "post",
+      data: permission
+    })
+  },
+
+  /* 
+  更新一个权限项
+  */
+  updatePermission(permission) {
+    return request({
+      url: `${api_name}/update`,
+      method: "put",
+      data: permission
+    })
+  },
+
+  /* 
+  查看某个角色的权限列表
+  */
+  toAssign(roleId) {
+    return request({
+      url: `${api_name}/toAssign/${roleId}`,
+      method: 'get'
+    })
+  },
+
+  /* 
+  给某个角色授权
+  */
+  doAssign(roleId, permissionId) {
+    return request({
+      url: `${api_name}/doAssign`,
+      method: "post",
+      params: {roleId, permissionId}
+    })
+  }
+}

+ 83 - 0
admin/src/api/acl/role.js

@@ -0,0 +1,83 @@
+/* 
+角色管理相关的API请求函数
+*/
+import request from '@/utils/request'
+
+const api_name = '/admin/acl/role'
+
+export default {
+
+  /* 
+  获取角色分页列表(带搜索)
+  */
+  getPageList(page, limit, searchObj) {
+    return request({
+      url: `${api_name}/${page}/${limit}`,
+      method: 'get',
+      params: searchObj // url查询字符串或表单键值对
+    })
+  },
+
+  /* 
+  获取某个角色
+  */
+  getById(id) {
+    return request({
+      url: `${api_name}/get/${id}`,
+      method: 'get'
+    })
+  },
+
+  /* 
+  保存一个新角色
+  */
+  save(role) {
+    return request({
+      url: `${api_name}/save`,
+      method: 'post',
+      data: role
+    })
+  },
+
+  /* 
+  更新一个角色
+  */
+  updateById(role) {
+    return request({
+      url: `${api_name}/update`,
+      method: 'put',
+      data: role
+    })
+  },
+
+  /* 
+  获取一个角色的所有权限列表
+  */
+  getAssign(roleId) {
+    return request({
+      url: `${api_name}/toAssign/${roleId}`,
+      method: 'get'
+    })
+  },
+
+  /* 
+  删除某个角色
+  */
+  removeById(id) {
+    return request({
+      url: `${api_name}/remove/${id}`,
+      method: 'delete'
+    })
+  },
+
+  /* 
+  批量删除多个角色
+  */
+  removeRoles(ids) {
+    return request({
+      url: `${api_name}/batchRemove`,
+      method: 'delete',
+      data: ids
+    })
+  }
+}

+ 132 - 0
admin/src/api/acl/user.js

@@ -0,0 +1,132 @@
+import request from '@/utils/request'
+
+const api_name = '/api/ihotel/hotelStaff'
+
+/*
+登陆
+*/
+export function login({ username, password }) {
+  return request({
+    url: '/admin/acl/index/login',
+    method: 'post',
+    data: { username, password }
+  })
+}
+
+/*
+获取用户信息(根据token)
+*/
+export function getInfo() {
+  return request({
+    url: '/admin/acl/index/info',
+    method: 'get'
+  })
+}
+
+/*
+登出
+*/
+export function logout() {
+  return request({
+    url: '/admin/acl/index/logout',
+    method: 'post'
+  })
+}
+
+/* 
+获取当前用户的菜单权限列表
+*/
+export function getMenu() {
+  return request('/admin/acl/index/menu')
+}
+
+
+/* 
+获取后台用户分页列表(带搜索)
+*/
+export function getPageList(page, limit, searchObj) {
+  return request({
+    url: `${api_name}/${page}/${limit}`,
+    method: 'get',
+    params: searchObj
+  })
+}
+
+/* 
+根据ID获取某个后台用户
+*/
+export function getById(id) {
+  return request({
+    url: `${api_name}/get/${id}`,
+    method: 'get'
+  })
+}
+
+/* 
+保存一个新的后台用户
+*/
+export function add(user) {
+  return request({
+    url: `${api_name}/save`,
+    method: 'post',
+    data: user
+  })
+}
+
+/* 
+更新一个后台用户
+*/
+export function update(user) {
+  return request({
+    url: `${api_name}/update`,
+    method: 'put',
+    data: user
+  })
+}
+
+/* 
+获取某个用户的所有角色
+*/
+export function getRoles(userId) {
+  return request({
+    url: `${api_name}/toAssign/${userId}`,
+    method: 'get'
+  })
+}
+
+/* 
+给某个用户分配角色
+roleId的结构: 字符串, 'rId1,rId2,rId3'
+*/
+export function assignRoles(userId, roleId) {
+  return request({
+    url: `${api_name}/doAssign`,
+    method: 'post',
+    params: {
+      userId,
+      roleId
+    }
+  })
+}
+
+/* 
+删除某个用户
+*/
+export function removeById(id) {
+  return request({
+    url: `${api_name}/remove/${id}`,
+    method: 'delete'
+  })
+}
+
+/* 
+批量删除多个用户
+ids的结构: ids是包含n个id的数组
+*/
+export function removeUsers(ids) {
+  return request({
+    url: `${api_name}/batchRemove`,
+    method: 'delete',
+    data: ids
+  })
+}

+ 18 - 17
admin/src/api/hotelOrder.js

@@ -1,6 +1,6 @@
 import http from '../utils/http'
 let resquest = "/api/ihotel/hotelOrder"
-
+let contentType = { 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8' }
 //  获取请求令牌
 export function hotelOrderToken(params) {
     return http.get(`${resquest}/user/submit/token`, params)
@@ -27,39 +27,40 @@ export function hotelOrderAdminPage(params) {
 }
 
 //  订单详情 【用户端】
-export function hotelOrderUserOrderId(params) {
-    return http.get(`${resquest}/user/order/{orderId}`, params)
+export function hotelOrderUserOrderId(orderId, params) {
+    return http.get(`${resquest}/user/order/${orderId}`, params)
 }
 
 //   获取订单支付参数
-export function hotelOrderOrderPay(params) {
-    return http.get(`${resquest}/user/order/pay/{orderId}`, params)
+export function hotelOrderOrderPay(orderId, params) {
+    return http.get(`${resquest}/user/order/pay/${orderId}`, params)
 }
 
-
-
 //   获取订单支付参数
-export function hotelOrderOrderBill(params) {
-    return http.get(`${resquest}/user/order/bill/{orderId}`, params)
+export function hotelOrderOrderBill(orderId, params) {
+    return http.get(`${resquest}/user/order/bill/${orderId}`, params)
 }
 
+
+
+
 //  删除订单【用户端】
-export function hotelOrderUserDelete(params) {
-    return http.delete(`${resquest}/user/order/{orderId}`, params)
+export function hotelOrderUserDelete(orderId, params) {
+    return http.delete(`${resquest}/user/order/${orderId}`, params, contentType)
 }
 
 // 取消订单
-export function hotelOrdercancel(params) {
-    return http.put(`${resquest}/user/order/cancel/{orderId}`, params)
+export function hotelOrdercancel(orderId, params) {
+    return http.put(`${resquest}/user/order/cancel/${orderId}`, params, contentType)
 }
 
 // 办理入住
-export function hotelOrderHold(params) {
-    return http.put(`${resquest}/user/order/hold/{orderId}`, params)
+export function hotelOrderHold(orderId, params) {
+    return http.put(`${resquest}/user/order/hold/${orderId}`, params, contentType)
 }
 
 // 办理退房
-export function hotelOrderReturn(params) {
-    return http.put(`${resquest}/user/order/return/{orderId}`, params)
+export function hotelOrderReturn(orderId, params) {
+    return http.put(`${resquest}/user/order/return/${orderId}`, params, contentType)
 }
 

+ 1 - 4
admin/src/layout/components/Navbar.vue

@@ -36,15 +36,12 @@ export default {
       time: moment().format("YYYY-M-D dddd HH:mm:ss"),
     };
   },
-  // computed: { ...mapState([itemPath]) },
   mounted() {},
   methods: {
     informs() {
       this.$router
         .replace({ name: "Inform" })
-        .then((res) => {
-          this.$store.commit("itemP", res.path);
-        })
+        .then((res) => {})
         .catch((err) => {
           console.log();
         });

+ 3 - 10
admin/src/layout/components/NavbarItem.vue

@@ -6,12 +6,11 @@
     <el-menu
       text-color="#fff"
       background-color="rgba(41, 109, 227, 1)"
-      :default-active="ItemIndex"
+      :default-active="$route.path"
       class="el-menu-vertical-demo"
       @open="handleOpen"
       @close="handleClose"
       :collapse="isCollapse"
-      @select="select"
       router
     >
       <el-menu-item index="/home">
@@ -64,7 +63,7 @@
         </div>
         <span slot="title">统计报表</span>
       </el-menu-item>
-      <el-menu-item index="system">
+      <el-menu-item index="/system">
         <div class="icons">
           <IconSvg
             :W="26"
@@ -90,18 +89,12 @@ export default {
   computed: {
     ItemIndex: {
       get() {
-        // console.log(this.$store.state.itemPath);
-        return this.$store.state.itemPath;
+        return this.$route.path;
       },
       set(val) {},
     },
   },
   methods: {
-    select(index, indexPath) {
-      this.ItemIndex = index;
-      this.$store.commit("itemP", index);
-    },
-
     handleOpen(key, keyPath) {
       console.log(key, keyPath);
     },

+ 1 - 3
admin/src/layout/index.vue

@@ -25,9 +25,7 @@ export default {
   data() {
     return {};
   },
-  created() {
-    this.$store.commit("itemP", this.$route.path);
-  },
+  created() {},
   methods: {
     pathN(data) {
       this.pathName = data;

+ 2 - 0
admin/src/main.js

@@ -6,6 +6,8 @@ import App from './App'
 import router from './router'
 import axios from "axios";
 import store from './store';
+
+
 import API from './api/api'
 import ElementUI from 'element-ui';
 import 'element-ui/lib/theme-chalk/index.css';

+ 77 - 54
admin/src/router/index.js

@@ -1,60 +1,83 @@
 import Vue from 'vue'
 import Router from 'vue-router'
-// import HelloWorld from '@/components/HelloWorld'
 import Layout from '@/layout'
 
 Vue.use(Router)
 
-export default new Router({
-    routes: [
-        {
-            path: '/',
-            name: 'Layout',
-            redirect: '/login',
-            component: Layout,
-            children: [
-                {
-                    path: 'home',
-                    name: 'Home',
-                    component: () => import('@/views/home')
-                },
-                {
-                    path: 'order',
-                    name: 'Order',
-                    component: () => import('@/views/order')
-                },
-                {
-                    path: 'staff',
-                    name: 'Staff',
-                    component: () => import('@/views/staff')
-                },
-                {
-                    path: 'account',
-                    name: 'Account',
-                    component: () => import('@/views/account')
-                },
-                {
-                    path: 'stat',
-                    name: 'Stat',
-                    component: () => import('@/views/stat')
-                },
-                {
-                    path: 'system',
-                    name: 'System',
-                    component: () => import('@/views/system')
-                },
-                {
-                    path: 'inform',
-                    name: 'Inform',
-                    component: () => import('@/views/inform')
-                }
-            ]
-        },
-        // 登录页
-        {
-            path: '/login',
-            component: () => import('@/views/login/index'),
-            hidden: true
-        },
-    ]
-})
+//不管是超级管理员还是普通用户都可以看到的页面 
+export const constantRoutes = [
+    // 登录页
+    {
+        path: '/login',
+        component: () => import('@/views/login/index'),
+        hidden: true
+    },
+]
+
+/**
+ * 异步路由
+ * asyncRoutes
+ */
+export const asyncRoutes = [
+    {
+        path: '/',
+        name: 'Layout',
+        redirect: '/home',
+        alwaysShow: true,
+        component: Layout,
+        children: [
+            {
+                path: 'home',
+                name: 'Home',
+                component: () => import('@/views/home')
+            },
+            {
+                path: 'order',
+                name: 'Order',
+                component: () => import('@/views/order')
+            },
+            {
+                path: 'staff',
+                name: 'Staff',
+                component: () => import('@/views/staff')
+            },
+            {
+                path: 'account',
+                name: 'Account',
+                component: () => import('@/views/account')
+            },
+            {
+                path: 'stat',
+                name: 'Stat',
+                component: () => import('@/views/stat')
+            },
+            {
+                path: 'system',
+                name: 'System',
+                component: () => import('@/views/system')
+            },
+            {
+                path: 'inform',
+                name: 'Inform',
+                component: () => import('@/views/inform')
+            }
+        ]
+    },
+]
+
+
+export const anyRoute = { path: '*', redirect: '/404', hidden: true }
+const createRouter = () => new Router({
+    // mode: 'history', // require service support
+    scrollBehavior: () => ({ y: 0 }),
+    routes: [...constantRoutes, ...asyncRoutes]
+})
+
+const router = createRouter()
+
+export function resetRouter() {
+    const newRouter = createRouter()
+    router.matcher = newRouter.matcher // reset router
+}
+
+export default router

+ 11 - 0
admin/src/store/getters.js

@@ -0,0 +1,11 @@
+const getters = {
+    sidebar: (state) => state.app.sidebar,
+    device: (state) => state.app.device,
+    token: (state) => state.user.token,
+    avatar: (state) => state.user.avatar,
+    name: (state) => state.user.name,
+    roles: (state) => state.user.roles,
+    routes: (state) => state.permission.routes,
+    buttons: (state) => state.user.buttons
+}
+export default getters

+ 8 - 15
admin/src/store/index.js

@@ -1,21 +1,14 @@
 import Vue from 'vue'
 import Vuex from 'vuex'
+import getters from './getters'
+import user from './modules/user'
 Vue.use(Vuex)
 
-export default new Vuex.Store({
-    state: {
-        //当前的路由值
-        itemPath: ''
-    },
-
-    getters: {
-
-    },
-
-    mutations: {
-        //修改当前的路由值
-        itemP(state, payload) {
-            state.itemPath = payload
-        }
+const store = new Vuex.Store({
+    modules: {
+        user
     },
+    getters
 })
+
+export default store

+ 114 - 0
admin/src/store/modules/user.js

@@ -0,0 +1,114 @@
+import { login, logout, getInfo } from '@/api/acl/user'
+// import { getToken, setToken, removeToken } from '@/utils/auth'
+import { resetRouter } from '@/router'
+import api from '@/api/api'
+const getDefaultState = () => {
+    return {
+        token: '',
+        name: '',
+        avatar: '',
+        roles: [],
+        buttons: []
+    }
+}
+
+const state = getDefaultState()
+
+const mutations = {
+    RESET_STATE: (state) => {
+        Object.assign(state, getDefaultState())
+    },
+    SET_TOKEN: (state, token) => {
+        state.token = token
+    },
+
+    SET_USERINFO: (state, userInfo) => {
+        state.name = userInfo.name
+        state.avatar = userInfo.avatar
+        state.buttons = userInfo.buttons
+    },
+
+    SET_ROLES: (state, roles) => {
+        state.roles = roles
+    }
+}
+
+const actions = {
+    // user login
+    login({ commit }, userInfo) {
+        const { username, password } = userInfo
+        return new Promise((resolve, reject) => {
+            api.hotelStaff.hotelStaffLogin({ username: username.trim(), password: password })
+                .then((response) => {
+                    console.log(response);
+                    const { data } = response
+                    commit('SET_TOKEN', data.token)
+                    setToken(data.token)
+                    resolve()
+                })
+                .catch((error) => {
+                    reject(error)
+                })
+        })
+    },
+
+    // get user info
+    getInfo({ commit, state }) {
+        return new Promise((resolve, reject) => {
+            getInfo(state.token)
+                .then((response) => {
+                    const { data } = response
+
+                    if (!data) {
+                        reject('Verification failed, please Login again.')
+                    }
+
+                    const { roles } = data
+
+                    // roles must be a non-empty array
+                    if (!roles || roles.length <= 0) {
+                        reject('getInfo: roles must be a non-null array!')
+                    }
+
+                    commit('SET_ROLES', roles)
+                    commit('SET_USERINFO', data)
+                    resolve(data)
+                })
+                .catch((error) => {
+                    reject(error)
+                })
+        })
+    },
+
+    // user logout
+    logout({ commit, state }) {
+        return new Promise((resolve, reject) => {
+            logout(state.token)
+                .then(() => {
+                    removeToken() // must remove  token  first
+                    resetRouter()
+                    commit('RESET_STATE')
+                    resolve()
+                })
+                .catch((error) => {
+                    reject(error)
+                })
+        })
+    },
+
+    // remove token
+    resetToken({ commit }) {
+        return new Promise((resolve) => {
+            removeToken() // must remove  token  first
+            commit('RESET_STATE')
+            resolve()
+        })
+    }
+}
+
+export default {
+    namespaced: true,
+    state,
+    mutations,
+    actions
+}

+ 15 - 0
admin/src/utils/auth.js

@@ -0,0 +1,15 @@
+import Cookies from 'js-cookie'
+
+const TokenKey = 'vue_admin_template_token'
+
+export function getToken() {
+  return Cookies.get(TokenKey)
+}
+
+export function setToken(token) {
+  return Cookies.set(TokenKey, token)
+}
+
+export function removeToken() {
+  return Cookies.remove(TokenKey)
+}

+ 9 - 9
admin/src/utils/http.js

@@ -8,42 +8,42 @@ const http = {
      * @param url 请求地址 
      * @param params 请求参数
      */
-    get(url, params) {
+    get(url, params, ContentType) {
         const config = {
             method: 'get',
-            url: url + params,
-            headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8' }
+            url: url,
+            headers: ContentType ? ContentType : { 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8' }
         }
         if (params) config.params = params
         return request(config)
     },
-    post(url, params) {
+    post(url, params, ContentType) {
         const config = {
             method: 'post',
             url: url,
-            headers: {
+            headers: ContentType ? ContentType : {
                 'Content-Type': 'application/json; charset=utf-8'
             }
         }
         if (params) config.data = params
         return request(config)
     },
-    put(url, params) {
+    put(url, params, ContentType) {
         const config = {
             method: 'put',
             url: url,
-            headers: {
+            headers: ContentType ? ContentType : {
                 'Content-Type': 'application/json; charset=utf-8'
             }
         }
         if (params) config.params = params
         return request(config)
     },
-    delete(url, params) {
+    delete(url, params, ContentType) {
         const config = {
             method: 'delete',
             url: url,
-            headers: {
+            headers: ContentType ? ContentType : {
                 'Content-Type': 'application/json; charset=utf-8'
             }
         }

+ 6 - 11
admin/src/utils/request.js

@@ -17,18 +17,13 @@ service.interceptors.request.use(config => {
     // config.headers = {
     //     'Content-Type': 'application/json' //配置请求头
     // }
-    console.log(config.headers['Content-Type']);
-    if (config.headers['Content-Type']) {
-    } else {
-        config.headers = { 'Content-Type': 'application/x-www-form-urlencoded' } //配置请求头
-    }
     // config.headers = { 'Content-Type': 'application/x-www-form-urlencoded' } //配置请求头
     //如有需要:注意使用token的时候需要引入cookie方法或者用本地localStorage等方法,推荐js-cookie
-    //const token = getCookie('cook');//这里取token之前,你肯定需要先拿到token,存一下
-    //if(token){
-    //config.params = {'token':token} //如果要求携带在参数中
-    //config.headers.token= token; //如果要求携带在请求头中
-    //}
+    const token = getCookie('cook');//这里取token之前,你肯定需要先拿到token,存一下
+    if (token) {
+        config.params = { 'token': token } //如果要求携带在参数中
+        config.headers.token = token; //如果要求携带在请求头中
+    }
     return config
 }, error => {
     Promise.reject(error)
@@ -38,7 +33,7 @@ service.interceptors.request.use(config => {
 service.interceptors.response.use(response => {
     //接收到响应数据并成功后的一些共有的处理,关闭loading等
 
-    return response.data
+    return response
 }, error => {
     /***** 接收到异常响应的处理开始 *****/
     if (error && error.response) {

+ 0 - 1
admin/src/views/inform/index.vue

@@ -498,7 +498,6 @@ export default {
     document.getElementsByClassName(
       "el-pagination__jump"
     )[0].childNodes[0].nodeValue = "跳转到";
-    this.$store.state.itemPath = this.$route.path;
     this.handleCurrentChange(1);
   },
   methods: {

+ 22 - 29
admin/src/views/login/index.vue

@@ -10,12 +10,12 @@
         <h3 class="title">智慧校园公寓管理端</h3>
       </div>
 
-      <el-form-item prop="userName">
+      <el-form-item prop="username">
         <span class="svg-container">
           <div class="user"></div>
         </span>
         <el-input
-          v-model="loginForm.userName"
+          v-model="loginForm.username"
           placeholder="用户名"
           type="text"
         />
@@ -49,11 +49,7 @@
 </template>
 
 <script>
-import JSEncrypt from "jsencrypt";
-const entry = new JSEncrypt();
-const pubKey =
-  "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMOcPB06u5yKyQsPjfVWiWgbEIrd14kiXNNihciaVKb6HnkQvq7zpQuZ80WEX94spnUMI3iOAl/GmIvHrpGwcbB4hJbznm+PajiwnUSPuCCXA68YJF640cJKb/8KeM7WVz69OFkIEPHhVxOy4FFF5QWe/kt6zOZ19HmE+ak+5x/QIDAQAB"; //可以直接找后端要,也可以请求接口获取
-entry.setPublicKey(pubKey);
+import { JSEncrypt } from "jsencrypt";
 export default {
   name: "Login",
   data() {
@@ -75,12 +71,12 @@ export default {
     return {
       // 表格绑定数据
       loginForm: {
-        userName: "",
+        username: "",
         password: "",
       },
       // 校验规则
       loginRules: {
-        userName: [
+        username: [
           { required: true, trigger: "blur", validator: validateUsername },
         ],
         password: [
@@ -123,28 +119,25 @@ export default {
         // 符合验证规则
         if (valid) {
           this.loading = true;
-          this.API.hotelStaff
-            .hotelStaffLogin({
-              username: this.loginForm.userName,
-              password: entry.encrypt(this.loginForm.password), //加密密码
+          let publicKey =
+            "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMOcPB06u5yKyQsPjfVWiWgbEIrd14kiXNNihciaVKb6HnkQvq7zpQuZ80WEX94spnUMI3iOAl/GmIvHrpGwcbB4hJbznm+PajiwnUSPuCCXA68YJF640cJKb/8KeM7WVz69OFkIEPHhVxOy4FFF5QWe/kt6zOZ19HmE+ak+5x/QIDAQAB";
+          let encryptor = new JSEncrypt(); // 新建JSEncrypt对象
+          encryptor.setPublicKey(publicKey); // 设置公钥
+          let rsaPassWord = encryptor.encrypt(this.loginForm.password); // 对密码进行加密
+          console.log(rsaPassWord);
+          this.API.hotelStaff.hotelStaffLogin();
+          this.$store
+            .dispatch("user/login", {
+              username: this.loginForm.username,
+              password: rsaPassWord,
             })
-            .then((res) => {
-              if (res) {
-                console.log(res);
-              } else {
-                console.log("登录失败");
-              }
+            .then(() => {
+              this.$router.push({ path: this.redirect || "/home" });
+              this.loading = false;
+            })
+            .catch(() => {
+              this.loading = false;
             });
-          // 从仓库调用login函数
-          // this.$store
-          //   .dispatch("user/login", this.loginForm)
-          //   .then(() => {
-          // this.$router.push({ path: this.redirect || "/home" });
-          this.loading = false;
-          // })
-          // .catch(() => {
-          //   this.loading = false;
-          // });
         }
         // 不符合验证规则
         else {