From 45655e2bec8b15be5cd2618182250ee55acdb7ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=9D=B0?= Date: Sun, 20 Jan 2019 19:34:40 +0800 Subject: [PATCH] =?UTF-8?q?v1.5=20beta=E7=89=88=E5=8F=91=E5=B8=83=EF=BC=8C?= =?UTF-8?q?=E8=AF=A6=E7=BB=86=E6=9F=A5=E7=9C=8B=E5=8F=91=E8=A1=8C=E7=89=88?= =?UTF-8?q?=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/genConfig.js | 16 ++ src/api/generator.js | 9 + src/api/myTest.js | 24 +++ src/icons/svg/codeConsole.svg | 2 +- src/icons/svg/develop.svg | 1 + src/icons/svg/error.svg | 1 + src/icons/svg/generate.svg | 1 - src/icons/svg/java.svg | 1 + src/icons/svg/log.svg | 2 +- src/icons/svg/redis.svg | 2 +- src/mixins/initData.js | 4 +- src/permission.js | 23 +-- src/store/modules/user.js | 15 +- src/styles/index.scss | 15 -- src/utils/auth.js | 10 ++ src/utils/request.js | 10 +- src/views/generator/index.vue | 62 +++++++ src/views/generator/module/form.vue | 99 +++++++++++ src/views/generator/module/generator.vue | 113 +++++++++++++ src/views/generator/module/header.vue | 45 +++++ src/views/login/index.vue | 168 ++++--------------- src/views/monitor/log/errorLog.vue | 77 +++++++++ src/views/monitor/log/index.vue | 11 +- src/views/monitor/log/module/header.vue | 9 +- src/views/monitor/redis/index.vue | 32 ++-- src/views/system/menu/index.vue | 18 +- src/views/system/menu/module/form.vue | 12 +- src/views/system/permission/index.vue | 18 +- src/views/system/permission/module/form.vue | 12 +- src/views/system/role/index.vue | 22 +-- src/views/system/role/module/header.vue | 2 +- src/views/system/timing/index.vue | 18 +- src/views/system/timing/module/log.vue | 18 +- src/views/system/user/center/updateEmail.vue | 1 + src/views/system/user/index.vue | 18 +- src/views/tools/picture/index.vue | 18 +- src/views/tools/qiniu/module/list.vue | 18 +- 37 files changed, 634 insertions(+), 293 deletions(-) create mode 100644 src/api/genConfig.js create mode 100644 src/api/generator.js create mode 100644 src/api/myTest.js create mode 100644 src/icons/svg/develop.svg create mode 100644 src/icons/svg/error.svg delete mode 100644 src/icons/svg/generate.svg create mode 100644 src/icons/svg/java.svg create mode 100644 src/views/generator/index.vue create mode 100644 src/views/generator/module/form.vue create mode 100644 src/views/generator/module/generator.vue create mode 100644 src/views/generator/module/header.vue create mode 100644 src/views/monitor/log/errorLog.vue diff --git a/src/api/genConfig.js b/src/api/genConfig.js new file mode 100644 index 0000000..5535d37 --- /dev/null +++ b/src/api/genConfig.js @@ -0,0 +1,16 @@ +import request from '@/utils/request' + +export function get() { + return request({ + url: 'api/genConfig', + method: 'get' + }) +} + +export function update(data) { + return request({ + url: 'api/genConfig', + data, + method: 'put' + }) +} diff --git a/src/api/generator.js b/src/api/generator.js new file mode 100644 index 0000000..c9302d6 --- /dev/null +++ b/src/api/generator.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' + +export function generator(data, tableName) { + return request({ + url: 'api/generator?tableName=' + tableName, + data, + method: 'post' + }) +} diff --git a/src/api/myTest.js b/src/api/myTest.js new file mode 100644 index 0000000..faabc13 --- /dev/null +++ b/src/api/myTest.js @@ -0,0 +1,24 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/myTest', + method: 'post', + data + }) +} + +export function del(id) { + return request({ + url: 'api/myTest/' + id, + method: 'delete' + }) +} + +export function edit(data) { + return request({ + url: 'api/myTest', + method: 'put', + data + }) +} diff --git a/src/icons/svg/codeConsole.svg b/src/icons/svg/codeConsole.svg index 40c2ea3..ca37b00 100644 --- a/src/icons/svg/codeConsole.svg +++ b/src/icons/svg/codeConsole.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/icons/svg/develop.svg b/src/icons/svg/develop.svg new file mode 100644 index 0000000..e49764e --- /dev/null +++ b/src/icons/svg/develop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/error.svg b/src/icons/svg/error.svg new file mode 100644 index 0000000..1a07929 --- /dev/null +++ b/src/icons/svg/error.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/generate.svg b/src/icons/svg/generate.svg deleted file mode 100644 index c180884..0000000 --- a/src/icons/svg/generate.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/icons/svg/java.svg b/src/icons/svg/java.svg new file mode 100644 index 0000000..117dc66 --- /dev/null +++ b/src/icons/svg/java.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svg/log.svg b/src/icons/svg/log.svg index 8f26a90..a740783 100644 --- a/src/icons/svg/log.svg +++ b/src/icons/svg/log.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/icons/svg/redis.svg b/src/icons/svg/redis.svg index 4b6da33..bef111b 100644 --- a/src/icons/svg/redis.svg +++ b/src/icons/svg/redis.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/mixins/initData.js b/src/mixins/initData.js index a11ebed..9648ae5 100644 --- a/src/mixins/initData.js +++ b/src/mixins/initData.js @@ -3,7 +3,7 @@ import { initData } from '@/api/data' export default { data() { return { - loading: true, data: [], page: 0, size: 10, total: 0, url: '', params: {}, query: {} + loading: true, data: [], page: 0, size: 10, total: 0, url: '', params: {}, query: {}, time: 170 } }, methods: { @@ -18,7 +18,7 @@ export default { this.data = res.content setTimeout(() => { this.loading = false - }, 230) + }, this.time) resolve(res) }).catch(err => { this.loading = false diff --git a/src/permission.js b/src/permission.js index e21e167..03e9ca9 100644 --- a/src/permission.js +++ b/src/permission.js @@ -1,9 +1,8 @@ import router from './router' import store from './store' -import { Message } from 'element-ui' import NProgress from 'nprogress' // progress bar import 'nprogress/nprogress.css'// progress bar style -import { getToken } from '@/utils/auth' // getToken from cookie +import { getToken, getStorageToken } from '@/utils/auth' // getToken from cookie import { buildMenus } from '@/api/menu' import { filterAsyncRouter } from './store/modules/permission' @@ -11,16 +10,9 @@ NProgress.configure({ showSpinner: false })// NProgress Configuration const whiteList = ['/login']// no redirect whitelist -// auth judge function -function hasPermission(roles, permissionRoles) { - if (roles.indexOf('ADMIN') >= 0) return true // admin auth passed directly - if (!permissionRoles) return true - return roles.some(role => permissionRoles.indexOf(role) >= 0) -} - router.beforeEach((to, from, next) => { NProgress.start() // start progress bar - if (getToken()) { + if (getToken() || getStorageToken()) { // 已登录且要跳转的页面是登录页 if (to.path === '/login') { next({ path: '/' }) @@ -37,18 +29,13 @@ router.beforeEach((to, from, next) => { }) }) }).catch((err) => { + console.log(err) store.dispatch('LogOut').then(() => { - Message.error(err || 'Verification failed, please login again') - next({ path: '/' }) + location.reload() // 为了重新实例化vue-router对象 避免bug }) }) } else { - // 没有动态改变权限的需求可直接next() 删除下方权限判断 ↓ - if (hasPermission(store.getters.roles, to.meta.roles)) { - next() - } else { - next({ path: '/401', replace: true, query: { noGoBack: true }}) - } + next() } } } else { diff --git a/src/store/modules/user.js b/src/store/modules/user.js index 2601ef2..4dc5d28 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -1,5 +1,5 @@ import { login, getInfo } from '@/api/login' -import { getToken, setToken, removeToken } from '@/utils/auth' +import { getToken, setToken, setStorageToken, removeToken } from '@/utils/auth' import { parseTime } from '@/utils/index' const user = { @@ -36,11 +36,16 @@ const user = { actions: { // 登录 Login({ commit }, userInfo) { - const username = userInfo.username.trim() + const username = userInfo.username + const password = userInfo.password + const rememberMe = userInfo.rememberMe return new Promise((resolve, reject) => { - login(username, userInfo.password).then(res => { + login(username, password).then(res => { setToken(res.token) commit('SET_TOKEN', res.token) + if (rememberMe) { + setStorageToken(res.token) + } resolve() }).catch(error => { reject(error) @@ -49,7 +54,7 @@ const user = { }, // 获取用户信息 - GetInfo({ commit, state }) { + GetInfo({ commit }) { return new Promise((resolve, reject) => { getInfo().then(res => { commit('SET_ROLES', res.roles) @@ -65,7 +70,7 @@ const user = { }, // 登出 - LogOut({ commit, state }) { + LogOut({ commit }) { return new Promise((resolve, reject) => { commit('SET_TOKEN', '') commit('SET_ROLES', []) diff --git a/src/styles/index.scss b/src/styles/index.scss index 0b2b9d6..22df3f6 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -126,18 +126,3 @@ a:hover { line-height: 32px; border-radius: 16px; } - -.badge { - position: relative; - display: inline-block; - padding: 0 6px; - font-size: 12px; - text-align: center; - background-color: #2F4056; - color: #fff; - border-radius: 2px; -} - -.badge-bg-orange { - background-color: #FF5722!important; -} diff --git a/src/utils/auth.js b/src/utils/auth.js index 08a43d6..96fa7cc 100644 --- a/src/utils/auth.js +++ b/src/utils/auth.js @@ -1,15 +1,25 @@ import Cookies from 'js-cookie' const TokenKey = 'Admin-Token' +const storageTokenKey = 'EL_ADMIN_COOKIE_TOKEN' export function getToken() { return Cookies.get(TokenKey) } +export function getStorageToken() { + return localStorage.getItem(storageTokenKey) +} + export function setToken(token) { return Cookies.set(TokenKey, token) } +export function setStorageToken(token) { + return localStorage.setItem(storageTokenKey, token) +} + export function removeToken() { + localStorage.removeItem(storageTokenKey) return Cookies.remove(TokenKey) } diff --git a/src/utils/request.js b/src/utils/request.js index 3a85607..3e07246 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -2,7 +2,7 @@ import axios from 'axios' import router from '@/router' import { Notification, MessageBox } from 'element-ui' import store from '../store' -import { getToken } from '@/utils/auth' +import { getToken, getStorageToken } from '@/utils/auth' // 创建axios实例 const service = axios.create({ @@ -13,8 +13,10 @@ const service = axios.create({ // request拦截器 service.interceptors.request.use( config => { - if (store.getters.token) { + if (getToken()) { config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改 + } else if (getStorageToken()) { + config.headers['Authorization'] = 'Bearer ' + getStorageToken() } config.headers['Content-Type'] = 'application/json' return config @@ -54,8 +56,8 @@ service.interceptors.response.use( } if (code === 401) { MessageBox.confirm( - '登录状态已失效,你可以取消继续留在该页面,或者重新登录', - '提示', + '登录状态过期了哦,您可以继续留在该页面,或者重新登录', + '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', diff --git a/src/views/generator/index.vue b/src/views/generator/index.vue new file mode 100644 index 0000000..65cce0d --- /dev/null +++ b/src/views/generator/index.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/src/views/generator/module/form.vue b/src/views/generator/module/form.vue new file mode 100644 index 0000000..1e0b2e2 --- /dev/null +++ b/src/views/generator/module/form.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/src/views/generator/module/generator.vue b/src/views/generator/module/generator.vue new file mode 100644 index 0000000..520e76a --- /dev/null +++ b/src/views/generator/module/generator.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/src/views/generator/module/header.vue b/src/views/generator/module/header.vue new file mode 100644 index 0000000..4da0899 --- /dev/null +++ b/src/views/generator/module/header.vue @@ -0,0 +1,45 @@ + + + diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 164e41e..c8ce8d4 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -1,32 +1,20 @@