Compare commits
2 Commits
cf3d489d9d
...
0a3b114ebe
Author | SHA1 | Date |
---|---|---|
roger_home_pc | 0a3b114ebe | 1 year ago |
roger_home_pc | 3307514ce0 | 1 year ago |
17 changed files with 426 additions and 31 deletions
@ -0,0 +1,9 @@ |
||||
import request from "@/request/index.js" |
||||
|
||||
export const userInfo = (data) => { |
||||
return request({ |
||||
url: '/personal/userinfo', |
||||
method: 'get', |
||||
data, |
||||
}) |
||||
} |
@ -0,0 +1,103 @@ |
||||
export const users = [ |
||||
{ |
||||
name: "visitor", |
||||
roleId: 'visitor', |
||||
password: "visitor", |
||||
}, |
||||
{ |
||||
name: "master", |
||||
roleId: "master", |
||||
password: "master", |
||||
}, |
||||
{ |
||||
name: "admin", |
||||
roleId: "admin", |
||||
password: "admin", |
||||
}, |
||||
]; |
||||
|
||||
export const menuTreeData = [ |
||||
{ |
||||
id: 1, |
||||
parentId: 0, |
||||
name: 'App', |
||||
path: "/app", |
||||
icon: "el-icon-menu", |
||||
children: [ |
||||
{ |
||||
id: 11, |
||||
parentId: 1, |
||||
name: 'AppUser', |
||||
path: "/app/user", |
||||
icon: "user", |
||||
}, |
||||
{ |
||||
id: 12, |
||||
parentId: 1, |
||||
name: 'AppDept', |
||||
path: "/app/dept", |
||||
icon: "office-building", |
||||
}, |
||||
{ |
||||
id: 13, |
||||
parentId: 1, |
||||
name: 'AppRole', |
||||
path: "/app/role", |
||||
icon: "avatar", |
||||
}, |
||||
{ |
||||
id: 14, |
||||
parentId: 1, |
||||
name: 'AppResource', |
||||
path: "/app/resource", |
||||
icon: "management", |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
id: 2, |
||||
parentId: 0, |
||||
name: 'Sys', |
||||
path: "/sys", |
||||
icon: "setting", |
||||
children: [ |
||||
{ |
||||
id: 21, |
||||
parentId: 2, |
||||
name: 'SysUser', |
||||
path: "/sys/user", |
||||
icon: "user-filled", |
||||
}, |
||||
{ |
||||
id: 22, |
||||
parentId: 2, |
||||
name: 'SysNotice', |
||||
path: "/sys/notice", |
||||
icon: "chat-dot-round", |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
id: 3, |
||||
parentId: 0, |
||||
name: 'Logs', |
||||
path: "/logs", |
||||
icon: "document", |
||||
children: [ |
||||
{ |
||||
id: 31, |
||||
parentId: 3, |
||||
name: 'LogsVisit', |
||||
path: "/logs/visit", |
||||
icon: "tickets", |
||||
}, |
||||
{ |
||||
id: 32, |
||||
parentId: 3, |
||||
name: 'LogsOperation', |
||||
path: "/logs/operation", |
||||
icon: "operation", |
||||
}, |
||||
], |
||||
}, |
||||
]; |
@ -0,0 +1,52 @@ |
||||
import Mock from "mockjs"; |
||||
import config from "@/request/config"; |
||||
import * as login from "./modules/login"; |
||||
import * as personal from "./modules/personal"; |
||||
const { baseURL } = config; |
||||
|
||||
// 1. 开启/关闭所有模块拦截, 通过openMock开关设置.
|
||||
// 2. 开启/关闭单个模块拦截, 通过调用mock方法isOpen参数设置.
|
||||
// 3. 开启/关闭模块中某个请求拦截, 通过函数返回对象中的isOpen属性设置.
|
||||
const openMock = true; |
||||
// 模拟所有模块
|
||||
// mockAll([login], openMock);
|
||||
|
||||
// function mockAll(modules, isOpen = true) {
|
||||
// for (const k in modules) {
|
||||
// mock(modules[k], isOpen);
|
||||
// }
|
||||
// }
|
||||
// 模拟单个模块
|
||||
mock(login, openMock) |
||||
mock(personal, openMock) |
||||
/** |
||||
* 创建mock模拟数据 |
||||
* @param {*} mod 模块 |
||||
* @param {*} isOpen 是否开启? |
||||
*/ |
||||
function mock(mod, isOpen = true) { |
||||
if (isOpen) { |
||||
for (var key in mod) { |
||||
((res) => { |
||||
if (res.isOpen !== false) { |
||||
let url = baseURL; |
||||
if (!url.endsWith("/")) { |
||||
url = url + "/"; |
||||
} |
||||
url = url + res.url; |
||||
Mock.mock(new RegExp(url), res.method, (opts) => { |
||||
opts.data = opts.body ? JSON.parse(opts.body) : null; |
||||
const resData = Mock.mock( |
||||
typeof res.response === "function" |
||||
? res.response(opts) |
||||
: res.response |
||||
); |
||||
console.log("%cmock拦截, 请求: ", "color:blue", opts); |
||||
console.log("%cmock拦截, 响应: ", "color:blue", resData); |
||||
return resData; |
||||
}); |
||||
} |
||||
})(mod[key]() || {}); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,54 @@ |
||||
/* |
||||
* 系统登录模块 |
||||
*/ |
||||
import { users } from "../data"; |
||||
// 登录
|
||||
export function login() { |
||||
return { |
||||
url: "login", |
||||
method: "post", |
||||
response: (opts) => { |
||||
const name = opts.data.account; |
||||
if ( |
||||
users.find((v) => v.name === name && v.password === opts.data.password) |
||||
) { |
||||
return { |
||||
code: 200, |
||||
msg: "", |
||||
data: { |
||||
token: name + "@eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImV4cC", |
||||
name, |
||||
}, |
||||
}; |
||||
} |
||||
return { |
||||
code: -1, |
||||
msg: "用户名或密码错误", |
||||
}; |
||||
}, |
||||
}; |
||||
} |
||||
// export function login() {
|
||||
// return {
|
||||
// url: "login",
|
||||
// method: "post",
|
||||
// response: () => {
|
||||
// return {
|
||||
// code: -1,
|
||||
// msg: "用户名或密码不正确!",
|
||||
// };
|
||||
// },
|
||||
// };
|
||||
// }
|
||||
// 登出接口
|
||||
export function logout() { |
||||
return { |
||||
url: "logout", |
||||
method: "get", |
||||
response: { |
||||
code: 200, |
||||
msg: null, |
||||
data: {}, |
||||
}, |
||||
}; |
||||
} |
@ -0,0 +1,66 @@ |
||||
import { users, menuTreeData } from "../data"; |
||||
export function userInfo() { |
||||
return { |
||||
url: "personal/userinfo", |
||||
method: "get", |
||||
response: () => { |
||||
const token = localStorage.getItem('pm_token'); |
||||
if (token) { |
||||
const uinfo = {...users.find((v) => v.name === token.split('@')[0])} |
||||
delete uinfo.password; |
||||
return { |
||||
code: 200, |
||||
data: { |
||||
...uinfo, |
||||
'unReadCount|0-10': 0 |
||||
} |
||||
}; |
||||
} else { |
||||
return { |
||||
code: -2, |
||||
msg: '请先登录!' |
||||
} |
||||
} |
||||
}, |
||||
}; |
||||
} |
||||
|
||||
export function menuTree() { |
||||
return { |
||||
url: "personal/menuTree", |
||||
method: "get", |
||||
response: () => { |
||||
const token = localStorage.getItem('pm_token'); |
||||
if (!token) { |
||||
return { |
||||
code: 200, |
||||
msg: '' |
||||
} |
||||
} |
||||
const name = token.split('@')[0] |
||||
const info = users.find(v => v.name === name) |
||||
const role = info.roleId; |
||||
let treeData = [menuTreeData[2]]; |
||||
switch (role) { |
||||
case "admin": |
||||
treeData = menuTreeData; |
||||
break; |
||||
case "master": |
||||
treeData = [menuTreeData[0], menuTreeData[2]]; |
||||
break; |
||||
case "visitor": |
||||
treeData = [menuTreeData[2]]; |
||||
break; |
||||
default: |
||||
break; |
||||
} |
||||
|
||||
return { |
||||
code: 200, |
||||
data: treeData, |
||||
}; |
||||
}, |
||||
}; |
||||
} |
||||
|
||||
|
@ -1,10 +1,10 @@ |
||||
export default { |
||||
method: 'get', |
||||
baseURL: 'http://localhost:8001', |
||||
header: { |
||||
headers: { |
||||
'Content-Type': 'application/json;charset=UTF-8' |
||||
}, |
||||
timeout: 10000, |
||||
withCredentials: true, |
||||
responseType: 'json', |
||||
} |
||||
} |
||||
|
@ -1,12 +1,27 @@ |
||||
import {createStore} from "vuex"; |
||||
|
||||
import user from "./modules/user.js" |
||||
|
||||
export default createStore({ |
||||
modules: { |
||||
user |
||||
}, |
||||
state: { |
||||
count: 0, |
||||
routeLoaded: false, // 菜单和路由是否已经加载
|
||||
firstRoute: null, // 第一个路由,用于设置进入主页 的redirect
|
||||
menuTree: null, // 菜单树
|
||||
}, |
||||
mutations: { |
||||
increase (state, count) { |
||||
state.count += count; |
||||
} |
||||
} |
||||
}) |
||||
// 改变菜单和路由的加载状态
|
||||
setRouteLoaded(state, loaded) { |
||||
state.routeLoaded = loaded; |
||||
}, |
||||
setFirstRoute(state, route) { |
||||
state.firstRoute = route; |
||||
}, |
||||
setMenuTree(state, data) { |
||||
state.menuTree = data |
||||
}, |
||||
}, |
||||
actions: {}, |
||||
}) |
||||
|
@ -0,0 +1,38 @@ |
||||
import {userInfo} from "@/apis/personal.js" |
||||
import {info} from "sass"; |
||||
|
||||
export default { |
||||
namespaced: true, |
||||
state: { |
||||
token: '', |
||||
userInfo: {} // 用户基本信息
|
||||
}, |
||||
getters: { |
||||
isLogin(state) { |
||||
return !!state.token || !!localStorage.getItem("pm_token"); |
||||
} |
||||
}, |
||||
mutations: { |
||||
setToken(state, token) { |
||||
localStorage.setItem('pm_token', token); |
||||
state.token = token; |
||||
}, |
||||
clearToken(state) { |
||||
state.token = ''; |
||||
localStorage.removeItem('pm_token'); |
||||
}, |
||||
setUserInfo(state, info) { |
||||
state.userInfo = info || {}; |
||||
}, |
||||
clearUserInfo(state) { |
||||
state.userInfo = {} |
||||
} |
||||
}, |
||||
actions: { |
||||
refreshInfo({commit}) { |
||||
userInfo().then(res => { |
||||
commit('setUserInfo', res.data) |
||||
}) |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue