正在显示
7 个修改的文件
包含
128 行增加
和
55 行删除
| 1 | import axios from 'axios' | 1 | import axios from 'axios' |
| 2 | import Vue from 'vue' | 2 | import Vue from 'vue' |
| 3 | import qs from 'qs' | 3 | import qs from 'qs' |
| 4 | -// let base = 'http://127.0.0.1:7003'; | ||
| 5 | -axios.defaults.baseURL = 'http://localhost:8082/api'; | 4 | + |
| 6 | Vue.prototype.$http = axios; | 5 | Vue.prototype.$http = axios; |
| 7 | 6 | ||
| 8 | -export const requestLogin = params => { | ||
| 9 | - return axios({ | ||
| 10 | - method: 'POST', | ||
| 11 | - url: '/login', | ||
| 12 | - data: qs.stringify(params), | ||
| 13 | - withCredentials: true, | ||
| 14 | - //下面转换成urlencode参数,也可以用QS包处理,qs.stringify(data) | ||
| 15 | - // transformRequest: [function (data) { | ||
| 16 | - // // Do whatever you want to transform the data | ||
| 17 | - // let ret = '' | ||
| 18 | - // for (let it in data) { | ||
| 19 | - // ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&' | ||
| 20 | - // } | ||
| 21 | - // return ret | ||
| 22 | - // }], | ||
| 23 | - headers: { | ||
| 24 | - 'Content-Type': 'application/x-www-form-urlencoded' | ||
| 25 | - } | ||
| 26 | - }) | ||
| 27 | - // return axios.post(`${base}/login`, params).then(res => res.data); | ||
| 28 | -}; | 7 | + |
| 29 | export const getuserMenus = params => { return axios.get(`/perm/userMenus`, { params: params }); }; | 8 | export const getuserMenus = params => { return axios.get(`/perm/userMenus`, { params: params }); }; |
| 30 | 9 | ||
| 31 | export const getUserList = params => { return axios.get(`/user/list`, { params: params }); }; | 10 | export const getUserList = params => { return axios.get(`/user/list`, { params: params }); }; |
| 1 | import axios from 'axios' | 1 | import axios from 'axios' |
| 2 | +import qs from 'qs' | ||
| 3 | + | ||
| 4 | + | ||
| 2 | axios.defaults.baseURL = 'http://localhost:8082/api'; | 5 | axios.defaults.baseURL = 'http://localhost:8082/api'; |
| 3 | -let base = axios.defaults.baseURL+'/role'; | ||
| 4 | 6 | ||
| 5 | -axios.interceptors.request.use(config => { | ||
| 6 | - // 这里可以加一些动作, 比如来个进度条开始动作, | ||
| 7 | - return config | ||
| 8 | -}, error => { | ||
| 9 | - return Promise.reject(error) | ||
| 10 | -}); | ||
| 11 | 7 | ||
| 12 | -axios.interceptors.response.use(response => response, error => Promise.resolve(error.response)); | ||
| 13 | 8 | ||
| 14 | export default { | 9 | export default { |
| 15 | post(url, data) { | 10 | post(url, data) { |
| 16 | return axios({ | 11 | return axios({ |
| 17 | - method: 'post', // 请求协议 | 12 | + method: 'POST', // 请求协议 |
| 18 | url: url, // 请求的地址 | 13 | url: url, // 请求的地址 |
| 19 | - data: qs.stringify(data), // post 请求的数据 | 14 | + data: data, // post 请求的数据 |
| 20 | timeout: 30000, // 超时时间, 单位毫秒 | 15 | timeout: 30000, // 超时时间, 单位毫秒 |
| 21 | headers: { | 16 | headers: { |
| 22 | - 'Content-Type': 'application/json;charset=UTF-8' | 17 | + 'Content-Type': 'application/json;charset=UTF-8', |
| 23 | } | 18 | } |
| 24 | }) | 19 | }) |
| 25 | }, | 20 | }, |
| 26 | get(url, params) { | 21 | get(url, params) { |
| 27 | - return axios.get(`${base}/${url}`, { params: params }); | 22 | + return axios({ |
| 23 | + method: 'GET', | ||
| 24 | + url: url, | ||
| 25 | + data: params, | ||
| 26 | + headers: { | ||
| 27 | + 'Content-Type': 'application/json;charset=UTF-8', | ||
| 28 | + } | ||
| 29 | + }); | ||
| 28 | }, | 30 | }, |
| 29 | put(url, params){ | 31 | put(url, params){ |
| 30 | return axios({ | 32 | return axios({ |
| 31 | method: 'PUT', | 33 | method: 'PUT', |
| 32 | - url: `${base}/${url}`, | 34 | + url: url, |
| 33 | data: params, | 35 | data: params, |
| 34 | headers: { | 36 | headers: { |
| 35 | 'Content-Type': 'application/json;charset=UTF-8' | 37 | 'Content-Type': 'application/json;charset=UTF-8' |
| @@ -39,12 +41,23 @@ export default { | @@ -39,12 +41,23 @@ export default { | ||
| 39 | del: (url,params) => { | 41 | del: (url,params) => { |
| 40 | return axios({ | 42 | return axios({ |
| 41 | method: 'DELETE', | 43 | method: 'DELETE', |
| 42 | - url: `${base}/${url}`, | 44 | + url: url, |
| 43 | data: params, | 45 | data: params, |
| 44 | headers: { | 46 | headers: { |
| 45 | 'Content-Type': 'application/json;charset=UTF-8' | 47 | 'Content-Type': 'application/json;charset=UTF-8' |
| 46 | } | 48 | } |
| 47 | }) | 49 | }) |
| 50 | + }, | ||
| 51 | + login: data =>{ | ||
| 52 | + return axios({ | ||
| 53 | + method: 'POST', // 请求协议 | ||
| 54 | + url: '/login', // 请求的地址 | ||
| 55 | + data: qs.stringify(data), // post 请求的数据 | ||
| 56 | + timeout: 30000, // 超时时间, 单位毫秒 | ||
| 57 | + headers: { | ||
| 58 | + 'Content-Type': 'application/x-www-form-urlencoded', | ||
| 59 | + } | ||
| 60 | + }) | ||
| 48 | } | 61 | } |
| 49 | } | 62 | } |
| 50 | 63 |
| 1 | import axios from 'axios' | 1 | import axios from 'axios' |
| 2 | 2 | ||
| 3 | -axios.defaults.baseURL = 'http://localhost:8082/api'; | ||
| 4 | -let base = axios.defaults.baseURL+'/role'; | 3 | +let base = '/role'; |
| 5 | 4 | ||
| 6 | 5 | ||
| 7 | export const getList = params => { return axios.get(`${base}/list`, { params: params }); }; | 6 | export const getList = params => { return axios.get(`${base}/list`, { params: params }); }; |
src/api/user.js
0 → 100644
| 1 | +import http from './http.js' | ||
| 2 | +let baseUrl = '/user' | ||
| 3 | + | ||
| 4 | +export const getUserList = params => { return http.get(`${baseUrl}/list`, params); }; | ||
| 5 | + | ||
| 6 | +export const getUserListPage = params => { return http.get(`/user/list`,params) }; | ||
| 7 | + | ||
| 8 | +export const removeUser = params => { return http.del(`/user/del`,params)}; | ||
| 9 | + | ||
| 10 | +export const batchRemoveUser = params => { return http.del(`/user/batchremove`, { params: params }); }; | ||
| 11 | + | ||
| 12 | +export const editUser = params => { return http.put(`/user/edit`,params)}; | ||
| 13 | + | ||
| 14 | +export const addUser = params => { return http.post(`/user/add`,params)}; | ||
| 15 | + | ||
| 16 | +export const setUserRole = params => { return http.put(`/user/roleset`,params)}; |
| @@ -7,6 +7,7 @@ import 'element-ui/lib/theme-default/index.css' | @@ -7,6 +7,7 @@ import 'element-ui/lib/theme-default/index.css' | ||
| 7 | import VueRouter from 'vue-router' | 7 | import VueRouter from 'vue-router' |
| 8 | import store from './vuex/store' | 8 | import store from './vuex/store' |
| 9 | import Vuex from 'vuex' | 9 | import Vuex from 'vuex' |
| 10 | +import axios from 'axios' | ||
| 10 | //import NProgress from 'nprogress' | 11 | //import NProgress from 'nprogress' |
| 11 | //import 'nprogress/nprogress.css' | 12 | //import 'nprogress/nprogress.css' |
| 12 | import rout from './routes' | 13 | import rout from './routes' |
| @@ -18,7 +19,9 @@ Vue.filter('datefmt',function(input,fmtstring){ | @@ -18,7 +19,9 @@ Vue.filter('datefmt',function(input,fmtstring){ | ||
| 18 | 19 | ||
| 19 | return moment(input).format(fmtstring) | 20 | return moment(input).format(fmtstring) |
| 20 | 21 | ||
| 21 | -}) | 22 | +}); |
| 23 | + | ||
| 24 | + | ||
| 22 | 25 | ||
| 23 | Mock.bootstrap(); | 26 | Mock.bootstrap(); |
| 24 | import 'font-awesome/css/font-awesome.min.css' | 27 | import 'font-awesome/css/font-awesome.min.css' |
| @@ -42,20 +45,81 @@ router.beforeEach((to, from, next) => { | @@ -42,20 +45,81 @@ router.beforeEach((to, from, next) => { | ||
| 42 | if (to.path == '/login') { | 45 | if (to.path == '/login') { |
| 43 | sessionStorage.removeItem('user'); | 46 | sessionStorage.removeItem('user'); |
| 44 | sessionStorage.removeItem('menu'); | 47 | sessionStorage.removeItem('menu'); |
| 48 | + sessionStorage.removeItem('token'); | ||
| 45 | } | 49 | } |
| 46 | let user = JSON.parse(sessionStorage.getItem('user')); | 50 | let user = JSON.parse(sessionStorage.getItem('user')); |
| 47 | - if (!user && to.path != '/login' && !sessionStorage.getItem('menu')) { | 51 | + if (!user && to.path != '/login' && !sessionStorage.getItem('menu') && !sessionStorage.getItem('token')) { |
| 48 | next({ path: '/login' }) | 52 | next({ path: '/login' }) |
| 49 | } else { | 53 | } else { |
| 50 | next() | 54 | next() |
| 51 | } | 55 | } |
| 52 | -}) | 56 | +}); |
| 57 | + | ||
| 58 | +axios.interceptors.response.use( | ||
| 59 | + res => { | ||
| 60 | + //对响应数据做些事 | ||
| 61 | + if (res.data && res.status===200) { | ||
| 62 | + this.$message({ | ||
| 63 | + // 饿了么的消息弹窗组件,类似toast | ||
| 64 | + showClose: true, | ||
| 65 | + message: res.data.error.message.message ? res.data.error.message.message : res.data.error.message, | ||
| 66 | + type: "error" | ||
| 67 | + }); | ||
| 68 | + return Promise.reject(res.data.error.message); | ||
| 69 | + } | ||
| 70 | + return res; | ||
| 71 | + }, | ||
| 72 | + error => { | ||
| 73 | + // 用户登录的时候会拿到一个基础信息,比如用户名,token,过期时间戳 | ||
| 74 | + // 直接丢localStorage或者sessionStorage | ||
| 75 | + if (!sessionStorage.getItem("token")) { | ||
| 76 | + // 若是接口访问的时候没有发现有鉴权的基础信息,直接返回登录页 | ||
| 77 | + router.push({ | ||
| 78 | + path: "/login" | ||
| 79 | + }); | ||
| 80 | + } else { | ||
| 81 | + | ||
| 82 | + // 下面是接口回调的satus ,因为我做了一些错误页面,所以都会指向对应的报错页面 | ||
| 83 | + if (error.response.status === 401) { | ||
| 84 | + router.push({ | ||
| 85 | + path: "/login" | ||
| 86 | + }); | ||
| 87 | + } | ||
| 88 | + | ||
| 89 | + // 下面是接口回调的satus ,因为我做了一些错误页面,所以都会指向对应的报错页面 | ||
| 90 | + if (error.response.status === 403) { | ||
| 91 | + router.push({ | ||
| 92 | + path: "/error/403" | ||
| 93 | + }); | ||
| 94 | + } | ||
| 95 | + if (error.response.status === 500) { | ||
| 96 | + router.push({ | ||
| 97 | + path: "/error/500" | ||
| 98 | + }); | ||
| 99 | + } | ||
| 100 | + if (error.response.status === 502) { | ||
| 101 | + router.push({ | ||
| 102 | + path: "/error/502" | ||
| 103 | + }); | ||
| 104 | + } | ||
| 105 | + if (error.response.status === 404) { | ||
| 106 | + router.push({ | ||
| 107 | + path: "/error/404" | ||
| 108 | + }); | ||
| 109 | + } | ||
| 110 | + } | ||
| 111 | + // 返回 response 里的错误信息 | ||
| 112 | + let errorInfo = error.data.error ? error.data.error.message : error.data; | ||
| 113 | + return Promise.reject(errorInfo); | ||
| 114 | + } | ||
| 115 | +); | ||
| 116 | + | ||
| 53 | 117 | ||
| 54 | //router.afterEach(transition => { | 118 | //router.afterEach(transition => { |
| 55 | //NProgress.done(); | 119 | //NProgress.done(); |
| 56 | //}); | 120 | //}); |
| 57 | 121 | ||
| 58 | -new Vue({ | 122 | +let vue = new Vue({ |
| 59 | //el: '#app', | 123 | //el: '#app', |
| 60 | //template: '<App/>', | 124 | //template: '<App/>', |
| 61 | router, | 125 | router, |
| @@ -32,8 +32,8 @@ | @@ -32,8 +32,8 @@ | ||
| 32 | </template> | 32 | </template> |
| 33 | 33 | ||
| 34 | <script> | 34 | <script> |
| 35 | - import { requestLogin,getuserMenus } from '../api/api'; | ||
| 36 | - import rt from '../routes' | 35 | + import axios from 'axios' |
| 36 | + import http from '../api/http'; | ||
| 37 | //import NProgress from 'nprogress' | 37 | //import NProgress from 'nprogress' |
| 38 | export default { | 38 | export default { |
| 39 | data() { | 39 | data() { |
| @@ -104,13 +104,12 @@ | @@ -104,13 +104,12 @@ | ||
| 104 | this.logining = true; | 104 | this.logining = true; |
| 105 | //NProgress.start(); | 105 | //NProgress.start(); |
| 106 | var loginParams = {username: this.ruleForm2.account, password: this.ruleForm2.checkPass}; | 106 | var loginParams = {username: this.ruleForm2.account, password: this.ruleForm2.checkPass}; |
| 107 | - requestLogin(loginParams).then(res => { | 107 | + http.login(loginParams).then(res => { |
| 108 | this.logining = false; | 108 | this.logining = false; |
| 109 | //NProgress.done(); | 109 | //NProgress.done(); |
| 110 | let status = res.status; | 110 | let status = res.status; |
| 111 | let authentication = res.data.authentication; | 111 | let authentication = res.data.authentication; |
| 112 | - let user = authentication.principal; | ||
| 113 | - let loginSuccess = authentication.authenticated; | 112 | + let loginSuccess = authentication.token; |
| 114 | let loginUserMenus = res.data.loginUserMenus; | 113 | let loginUserMenus = res.data.loginUserMenus; |
| 115 | if (status !== 200) { | 114 | if (status !== 200) { |
| 116 | let msg = "登录错误"; | 115 | let msg = "登录错误"; |
| @@ -119,7 +118,11 @@ | @@ -119,7 +118,11 @@ | ||
| 119 | type: "error" | 118 | type: "error" |
| 120 | }); | 119 | }); |
| 121 | } else if (loginSuccess) { | 120 | } else if (loginSuccess) { |
| 122 | - sessionStorage.setItem('user', JSON.stringify(user)); | 121 | + sessionStorage.setItem('user', JSON.stringify(authentication)); |
| 122 | + sessionStorage.setItem('token','Bearer '+ loginSuccess); | ||
| 123 | + //设置token,设置axios 基本配置 | ||
| 124 | + let token = sessionStorage.getItem('token'); | ||
| 125 | + axios.defaults.headers.common['Authorization'] = token; | ||
| 123 | //处理用户menu | 126 | //处理用户menu |
| 124 | _this.userMenus = loginUserMenus.list; | 127 | _this.userMenus = loginUserMenus.list; |
| 125 | console.log("userMenus:"); | 128 | console.log("userMenus:"); |
| @@ -56,7 +56,7 @@ | @@ -56,7 +56,7 @@ | ||
| 56 | <!--工具条--> | 56 | <!--工具条--> |
| 57 | <el-col :span="24" class="toolbar"> | 57 | <el-col :span="24" class="toolbar"> |
| 58 | <el-button type="danger" @click="batchRemove" :disabled="this.sels.length===0">批量删除</el-button> | 58 | <el-button type="danger" @click="batchRemove" :disabled="this.sels.length===0">批量删除</el-button> |
| 59 | - <el-pagination layout="prev, pager, next" @current-change="handleCurrentChange" :page-size="5" :total="total" style="float:right;"> | 59 | + <el-pagination layout="prev, pager, next" @current-change="handleCurrentChange" :page-size="10" :total="total" style="float:right;"> |
| 60 | </el-pagination> | 60 | </el-pagination> |
| 61 | </el-col> | 61 | </el-col> |
| 62 | 62 | ||
| @@ -183,7 +183,7 @@ | @@ -183,7 +183,7 @@ | ||
| 183 | <script> | 183 | <script> |
| 184 | import util from '../../common/js/util' | 184 | import util from '../../common/js/util' |
| 185 | import NProgress from 'nprogress' | 185 | import NProgress from 'nprogress' |
| 186 | - import { getUserList, removeUser, batchRemoveUser, editUser, addUser, setUserRole } from '../../api/api'; | 186 | + import { getUserList, removeUser, batchRemoveUser, editUser, addUser, setUserRole } from '../../api/user'; |
| 187 | import { getList} from '../../api/role_api'; | 187 | import { getList} from '../../api/role_api'; |
| 188 | import moment from 'moment' | 188 | import moment from 'moment' |
| 189 | export default { | 189 | export default { |
| @@ -265,7 +265,7 @@ | @@ -265,7 +265,7 @@ | ||
| 265 | this.getUsers(); | 265 | this.getUsers(); |
| 266 | }, | 266 | }, |
| 267 | //获取用户列表 | 267 | //获取用户列表 |
| 268 | - getUsers() { | 268 | + getUsers:function() { |
| 269 | let para = { | 269 | let para = { |
| 270 | pageNum: this.pageNum, | 270 | pageNum: this.pageNum, |
| 271 | pageSize: this.pageSize, | 271 | pageSize: this.pageSize, |
| @@ -280,9 +280,8 @@ | @@ -280,9 +280,8 @@ | ||
| 280 | //NProgress.done(); | 280 | //NProgress.done(); |
| 281 | }).catch((error) => { | 281 | }).catch((error) => { |
| 282 | this.listLoading = false; | 282 | this.listLoading = false; |
| 283 | - let res= error.response.data; | ||
| 284 | 283 | ||
| 285 | - alert(res.msg); | 284 | + alert(error); |
| 286 | }); | 285 | }); |
| 287 | 286 | ||
| 288 | }, | 287 | }, |
| @@ -436,7 +435,7 @@ | @@ -436,7 +435,7 @@ | ||
| 436 | }, | 435 | }, |
| 437 | //批量删除 | 436 | //批量删除 |
| 438 | batchRemove: function () { | 437 | batchRemove: function () { |
| 439 | - var ids = this.sels.map(item => item.id).toString(); | 438 | + var ids = this.sels.map(item => item.userId).toString(); |
| 440 | this.$confirm('确认删除选中记录吗?', '提示', { | 439 | this.$confirm('确认删除选中记录吗?', '提示', { |
| 441 | type: 'warning' | 440 | type: 'warning' |
| 442 | }).then(() => { | 441 | }).then(() => { |
-
请 注册 或 登录 后发表评论