Skip to content

Commit 4968f28

Browse files
committed
#fixed
1.增加登录 2.增加权限用户列表
1 parent cdebb5c commit 4968f28

File tree

17 files changed

+899
-387
lines changed

17 files changed

+899
-387
lines changed

.eslintrc.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ module.exports = {
189189
'keyword-spacing': 'error',
190190

191191
// enforce consistent linebreak style
192-
'linebreak-style': 'error',
192+
//'linebreak-style': 'error',
193193

194194
// require or disallow newlines around directives
195195
'lines-around-directive': 'error',
@@ -239,7 +239,7 @@ module.exports = {
239239
'no-console': 'off',
240240

241241
// enforce consistent spacing before function definition opening parenthesis
242-
'space-before-function-paren': ['error', 'never'],
242+
//'space-before-function-paren': ['error', 'never'],
243243

244244
// enforce consistent spacing inside parentheses
245245
'space-in-parens': 'error',
@@ -262,10 +262,10 @@ module.exports = {
262262
*/
263263

264264
// require braces around arrow function bodies
265-
'arrow-body-style': 'error',
265+
//'arrow-body-style': 'error',
266266

267267
// require parentheses around arrow function arguments
268-
'arrow-parens': ['error', 'as-needed'],
268+
//'arrow-parens': ['error', 'as-needed'],
269269

270270
// enforce consistent spacing before and after the arrow in arrow functions
271271
'arrow-spacing': 'error',
@@ -301,7 +301,7 @@ module.exports = {
301301
'prefer-numeric-literals': 'error',
302302

303303
// require rest parameters instead of arguments
304-
'prefer-rest-params': 'error',
304+
//'prefer-rest-params': 'error',
305305

306306
// require spread operators instead of .apply()
307307
'prefer-spread': 'error',

config/index.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,13 @@ module.exports = {
3030
assetsSubDirectory: 'static',
3131
assetsPublicPath: '/',
3232
staticPath:'/static/',
33-
proxyTable: {},
33+
proxyTable: {
34+
localhost: {
35+
filter: '/api',
36+
target: 'http://localhost/',
37+
changeOrigin: true
38+
}
39+
},
3440
// CSS Sourcemaps off by default because relative paths are "buggy"
3541
// with this option, according to the CSS-Loader README
3642
// (https://github.com/webpack/css-loader#sourcemaps)

src/api/login.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
1-
import fetch from 'utils/fetch';
1+
import fetch from '../utils/fetch_new';
22

3-
export function loginByEmail(email, password) {
3+
export function loginByName(loginName, password) {
44
const data = {
5-
email,
5+
loginName,
66
password
77
};
88
return fetch({
9-
url: '/login/loginbyemail',
9+
url: '/users/login',
1010
method: 'post',
1111
data
1212
});
1313
}
1414

1515
export function logout() {
1616
return fetch({
17-
url: '/login/logout',
18-
method: 'post'
17+
url: '/users/logout',
18+
method: 'get'
1919
});
2020
}
2121

2222
export function getInfo(token) {
2323
return fetch({
24-
url: '/user/info',
24+
url: '/users/info',
2525
method: 'get',
2626
params: { token }
2727
});

src/api/role.js

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/**
2+
* Created by linxiaojie on 2017/8/8.
3+
*/
4+
import fetch from '../utils/fetch_new'
5+
import { cleanArray } from '../utils'
6+
7+
/*
8+
* 获取列表
9+
* */
10+
export const getAll = (query) => {
11+
return fetch({
12+
url: '/roles',
13+
method: 'get',
14+
params: query
15+
})
16+
}
17+
18+
/*
19+
* 查询详情
20+
* */
21+
export const getDetail = (id) => {
22+
return fetch({
23+
url: '/roles/' + id,
24+
method: 'get'
25+
})
26+
}
27+
28+
/*
29+
* 更新详情
30+
* */
31+
export const updateDetail = (data = { id: '' }) => {
32+
if (data.id === '') {
33+
return Promise.reject('id不能为空')
34+
}
35+
return fetch({
36+
url: 'roles/' + data.id,
37+
method: 'post',
38+
data
39+
})
40+
}
41+
42+
/*
43+
* 删除数据
44+
* */
45+
export const del = (ids = []) => {
46+
ids = cleanArray(ids)
47+
if (ids.length === 0) {
48+
return Promise.reject('ids不能为空')
49+
}
50+
const url = 'roles/' + (ids.length > 1 ? '/batch/' + ids.join(',') : ids[0]) + id
51+
return fetch({
52+
url,
53+
method: 'post',
54+
data
55+
})
56+
}

src/main.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,21 @@ function hasPermission(roles, permissionRoles) {
4242

4343
// register global progress.
4444
const whiteList = ['/login', '/authredirect', '/reset', '/sendpwd'];// 不重定向白名单
45+
/*
46+
* 登录更新路由
47+
* */
48+
let generate_routes = 1
49+
4550
router.beforeEach((to, from, next) => {
4651
NProgress.start(); // 开启Progress
4752
if (getToken()) { // 判断是否有token
4853
if (to.path === '/login') {
4954
next({ path: '/' });
5055
} else {
51-
if (store.getters.roles.length === 0) { // 判断当前用户是否已拉取完user_info信息
52-
store.dispatch('GetInfo').then(res => { // 拉取user_info
53-
const roles = res.data.role;
54-
store.dispatch('GenerateRoutes', { roles }).then(() => { // 生成可访问的路由表
56+
if (generate_routes) { // 更新路由
57+
store.dispatch('GetInfo').then(() => {
58+
store.dispatch('GenerateRoutes', { roles: store.getters.roles }).then(() => { // 生成可访问的路由表
59+
generate_routes = 0
5560
router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表
5661
next({ ...to }); // hack方法 确保addRoutes已完成
5762
})

src/router/index.js

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ Vue.use(Router);
88
/* layout */
99
import Layout from '../views/layout/Layout';
1010

11+
/* view */
12+
import Login from '../views/login'
13+
import Role from '../views/role'
1114
/**
1215
* icon : the icon show in the sidebar
1316
* hidden : if `hidden:true` will not show in the sidebar
@@ -16,7 +19,7 @@ import Layout from '../views/layout/Layout';
1619
* meta : { role: ['admin'] } will control the page role
1720
**/
1821
export const constantRouterMap = [
19-
{ path: '/login', component: _import('login/index'), hidden: true },
22+
{ path: '/login', component: Login, hidden: true },
2023
{ path: '/authredirect', component: _import('login/authredirect'), hidden: true },
2124
{ path: '/404', component: _import('error/404'), hidden: true },
2225
{ path: '/401', component: _import('error/401'), hidden: true },
@@ -46,14 +49,15 @@ export default new Router({
4649

4750
export const asyncRouterMap = [
4851
{
49-
path: '/permission',
52+
path: '/crp',
5053
component: Layout,
51-
redirect: '/permission/index',
52-
name: '权限测试',
54+
redirect: 'noredirect',
55+
name: '权限管理',
5356
icon: 'quanxian',
54-
meta: { role: ['admin'] },
55-
noDropdown: true,
56-
children: [{ path: 'index', component: _import('permission/index'), name: '权限测试页', meta: { role: ['admin'] } }]
57+
// meta: { role: ['admin'] },
58+
children: [
59+
{ path: 'roles', component: Role, name: '角色管理' }
60+
]
5761
},
5862
{
5963
path: '/components',
@@ -76,7 +80,7 @@ export const asyncRouterMap = [
7680
{ path: 'backtotop', component: _import('components/backToTop'), name: '返回顶部' }
7781
]
7882
},
79-
{
83+
/* {
8084
path: '/charts',
8185
component: Layout,
8286
redirect: '/charts/index',
@@ -89,7 +93,7 @@ export const asyncRouterMap = [
8993
{ path: 'line', component: _import('charts/line'), name: '折线图' },
9094
{ path: 'mixchart', component: _import('charts/mixChart'), name: '混合图表' }
9195
]
92-
},
96+
},*/
9397
{
9498
path: '/example',
9599
component: Layout,

src/store/getters.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const getters = {
99
roles: state => state.user.roles,
1010
setting: state => state.user.setting,
1111
permission_routers: state => state.permission.routers,
12-
addRouters: state => state.permission.addRouters
12+
addRouters: state => state.permission.addRouters,
13+
crpRoles: state => state.role
1314
};
1415
export default getters

src/store/index.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,20 @@ import app from './modules/app';
44
import user from './modules/user';
55
import permission from './modules/permission';
66
import getters from './getters';
7+
import createLogger from '../../node_modules/vuex/src/plugins/logger'
8+
import role from './modules/role'
79

810
Vue.use(Vuex);
911

1012
const store = new Vuex.Store({
1113
modules: {
1214
app,
1315
user,
14-
permission
16+
permission,
17+
role
1518
},
16-
getters
19+
getters,
20+
plugins: process.env.NODE_ENV === 'development' ? [createLogger()] : []
1721
});
1822

1923
export default store

src/store/modules/role.js

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
/**
2+
* Created by linxiaojie on 2017/8/8.
3+
*/
4+
import { each, has } from '../../utils'
5+
import * as TYPES from '../types'
6+
import { getAll, getDetail, updateDetail, del } from '../../api/role'
7+
8+
const role = {
9+
state: {
10+
records: [],
11+
pageInfo: {
12+
currentPage: 1,
13+
totalRow: 0,
14+
totalPage: 0
15+
},
16+
current: {
17+
_id: '',
18+
name: '',
19+
description: '',
20+
status: '',
21+
permissions: []
22+
}
23+
},
24+
mutations: {
25+
[TYPES.SET_ROLES_LIST] (state, data) {
26+
each(data, (val, key) => {
27+
if (has(state, key)) {
28+
state[key] = val
29+
}
30+
})
31+
},
32+
[TYPES.SET_ROLES_SELECTED] (state, item) {
33+
each(item, (val, key) => {
34+
if (state.current.has(key)) {
35+
state.current[key] = val
36+
}
37+
})
38+
},
39+
[TYPES.SET_ROLES_PERMISSIONS] (state, permissions) {
40+
state.current.permissions = permissions
41+
}
42+
},
43+
actions: {
44+
GetAllRoles ({ commit }, query) {
45+
return new Promise((resolve, reject) => {
46+
getAll(query).then(({ data }) => {
47+
commit(TYPES.SET_ROLES_LIST, data);
48+
resolve();
49+
}).catch(error => {
50+
reject(error);
51+
});
52+
});
53+
},
54+
GetRoleDetail ({ commit }, id) {
55+
return new Promise((resolve, reject) => {
56+
getDetail(id).then(({ data: { role } }) => {
57+
commit(TYPES.SET_ROLES_SELECTED, role);
58+
resolve();
59+
}).catch(error => {
60+
reject(error);
61+
});
62+
});
63+
},
64+
UpdateRoleDetail ({ commit, state }, id, detail) {
65+
return new Promise((resolve, reject) => {
66+
updateDetail(detail).then(() => resolve()).catch(error => {
67+
reject(error);
68+
});
69+
});
70+
},
71+
DelRoles ({ dispatch }, ids) {
72+
return new Promise((resolve, reject) => {
73+
del(ids).then(() => {
74+
dispatch('GetAllRoles').then(resolve, reject)
75+
}).catch(error => {
76+
reject(error);
77+
});
78+
});
79+
}
80+
}
81+
}
82+
83+
export default role

0 commit comments

Comments
 (0)