Browse Source

提交代码

master
刘力 4 years ago
parent
commit
30554d0455
  1. 8
      src/api/login.js
  2. 43
      src/api/system/menu.js
  3. 37
      src/layout/TopMenus.vue
  4. 0
      src/layout/index.vue
  5. 10
      src/main.js
  6. 20
      src/router/index.js
  7. 18
      src/router/routers.js
  8. 4
      src/utils/auth.js
  9. 2
      src/utils/rsaEncrypt.js
  10. 75
      src/views/login.vue

8
src/api/login.js

@ -1,13 +1,11 @@
/* /*
* @Author: liu·li * @Author: liu·li
* @Date: 2021-09-Fr 05:18:30 * @Date: 2021-09-Fr 05:18:30
* @Last Modified by: mikey.zhaopeng
* @Last
* @Last Modified time: 2021-09-Fr 05:18:30 * @Last Modified time: 2021-09-Fr 05:18:30
*/ */
import request from '@/utils/request' import request from '@/utils/request'
// 登录方法 // 登录方法
export function login(username, password, code, uuid) { export function login(username, password, code, uuid) {
return request({ return request({
@ -26,11 +24,10 @@ export function login(username, password, code, uuid) {
export function getInfo() { export function getInfo() {
return request({ return request({
url: 'auth/info', url: 'auth/info',
method: 'get',
method: 'get'
}) })
} }
// 获取验证码 // 获取验证码
export function getCodeImg() { export function getCodeImg() {
return request({ return request({
@ -39,7 +36,6 @@ export function getCodeImg() {
}) })
} }
// 登出方法 // 登出方法
export function logout() { export function logout() {
return request({ return request({

43
src/api/system/menu.js

@ -1,11 +1,11 @@
import request from '@/utils/request';
import request from '@/utils/request'
// 根据pid 获取菜单 // 根据pid 获取菜单
export function getMenusTree(pid) { export function getMenusTree(pid) {
return request({ return request({
url: 'api/menus/lazy?pid=' + pid, url: 'api/menus/lazy?pid=' + pid,
method: 'get' method: 'get'
});
})
} }
export function getMenus(params) { export function getMenus(params) {
@ -13,71 +13,54 @@ export function getMenus(params) {
url: 'api/menus', url: 'api/menus',
method: 'get', method: 'get',
params params
});
})
} }
//根据id获取上级菜单
export function getMenuSuperior(ids) { export function getMenuSuperior(ids) {
const data = ids.length || ids.length === 0 ? ids : Array.of(ids);
const data = ids.length || ids.length === 0 ? ids : Array.of(ids)
return request({ return request({
url: 'api/menus/superior', url: 'api/menus/superior',
method: 'post', method: 'post',
data data
});
})
} }
//获取子菜单
export function getChild(id) { export function getChild(id) {
return request({ return request({
url: 'api/menus/child?id=' + id, url: 'api/menus/child?id=' + id,
method: 'get' method: 'get'
});
})
} }
//构建菜单
export function buildMenus() { export function buildMenus() {
return request({ return request({
url: 'api/menus',
method: 'post',
data
});
url: 'api/menus/build',
method: 'get'
})
} }
//新增菜单
export function add(data) { export function add(data) {
return request({ return request({
url: 'api/menus', url: 'api/menus',
method: 'post', method: 'post',
data data
});
})
} }
//删除菜单
export function del(ids) { export function del(ids) {
return request({ return request({
url: 'api/menus', url: 'api/menus',
method: 'delete', method: 'delete',
data: ids data: ids
});
})
} }
//修改菜单
export function edit(data) { export function edit(data) {
return request({ return request({
url: 'api/menus', url: 'api/menus',
method: 'put', method: 'put',
data data
});
})
} }
export default {
add,
edit,
del,
getMenus,
getMenusTree,
getMenuSuperior,
getChild,
getMenusTree
};
export default { add, edit, del, getMenus, getMenusTree, getMenuSuperior, getChild }

37
src/layout/TopMenus.vue

@ -1,30 +1,27 @@
<template> <template>
<el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect">
<el-menu-item index="1">处理中心</el-menu-item>
<el-submenu index="2">
<template slot="title">我的工作台</template>
<el-menu-item index="2-1">选项1</el-menu-item>
<el-menu-item index="2-2">选项2</el-menu-item>
<el-menu-item index="2-3">选项3</el-menu-item>
<el-submenu index="2-4">
<template slot="title">选项4</template>
<el-menu-item index="2-4-1">选项1</el-menu-item>
<el-menu-item index="2-4-2">选项2</el-menu-item>
<el-menu-item index="2-4-3">选项3</el-menu-item>
</el-submenu>
</el-submenu>
<el-menu-item index="3" disabled>消息中心</el-menu-item>
<el-menu-item index="4"><a href="https://www.ele.me" target="_blank">订单管理</a></el-menu-item>
<el-menu :default-active="activeMenu" :background-color="variables.menuBg" :text-color="variables.menuText" :active-text-color="variables.menuActiveText" :collapse-transition="false" mode="horizontal">
<sidebar-item v-for="route in sidebarRouters" :key="route.path" :item="route" :base-path="route.path" />
</el-menu> </el-menu>
</template> </template>
<script> <script>
import { mapGetters } from 'vuex'
import variables from '@/assets/styles/variables.scss'
export default { export default {
name: 'TopMenus', name: 'TopMenus',
data() {
return {
activeIndex: '1',
activeIndex2: '1'
computed: {
...mapGetters(['sidebarRouters', 'sidebar']),
activeMenu() {
const route = this.$route
const { meta, path } = route
if (meta.activeMenu) {
return meta.activeMenu
}
return path
},
variables() {
return variables
} }
}, },
methods: { methods: {

0
src/layout/index.vue

10
src/main.js

@ -10,11 +10,11 @@ import store from './store'
import 'element-ui/lib/theme-chalk/index.css' import 'element-ui/lib/theme-chalk/index.css'
// 加载权限控制 // 加载权限控制
//import './router/index'
import './router/index'
// 加载权限指令 // 加载权限指令
//import checkPer from '@/utils/permission'
//import permission from './components/Permission'
import checkPer from '@/utils/permission'
import permission from './components/Permission'
import './assets/styles/element-variables.scss' import './assets/styles/element-variables.scss'
// 全局CSS // 全局CSS
@ -34,8 +34,8 @@ Vue.use(ElementUI, {
size: Cookies.get('size') || 'small' size: Cookies.get('size') || 'small'
}) })
// 加载权限指令 // 加载权限指令
//Vue.use(checkPer)
//Vue.use(permission)
Vue.use(checkPer)
Vue.use(permission)
Vue.config.productionTip = false Vue.config.productionTip = false
new Vue({ new Vue({

20
src/router/index.js

@ -74,15 +74,9 @@ export const loadMenus = (next, to) => {
buildMenus().then(res => { buildMenus().then(res => {
const sdata = JSON.parse(JSON.stringify(res)) const sdata = JSON.parse(JSON.stringify(res))
const rdata = JSON.parse(JSON.stringify(res)) const rdata = JSON.parse(JSON.stringify(res))
const sidebarRoutes = filterAsyncRouter()
})
rewriteRoutes.push({
path: '*',
redirect: '/404',
hidden: true
})
const sidebarRoutes = filterAsyncRouter(sdata)
const rewriteRoutes = filterAsyncRouter(rdata, true)
rewriteRoutes.push({ path: '*', redirect: '/404', hidden: true })
// 存储路由 // 存储路由
store.dispatch('GenerateRoutes', rewriteRoutes).then(() => { store.dispatch('GenerateRoutes', rewriteRoutes).then(() => {
/* /*
@ -98,14 +92,12 @@ export const loadMenus = (next, to) => {
* 告诉VUE本次操作后 * 告诉VUE本次操作后
* 不能通过浏览器后退按钮返回前一个路由 * 不能通过浏览器后退按钮返回前一个路由
*/ */
next({
// ...to,
replace: true
})
next({ ...to, replace: true })
}) })
store.dispatch('SetSidebarRouters', sidebarRoutes) store.dispatch('SetSidebarRouters', sidebarRoutes)
})
} }
// 进度条
router.afterEach(() => { router.afterEach(() => {
NProgress.done() NProgress.done()
}) })

18
src/router/routers.js

@ -1,15 +1,29 @@
import Vue from 'vue' import Vue from 'vue'
import Router from 'vue-router' import Router from 'vue-router'
import Layout from '../layout/index'
Vue.use(Router) Vue.use(Router)
export const constantRouterMap = [ export const constantRouterMap = [
{ {
path: '/menu',
component: resolve => require(['@/layout/TopMenus'], resolve),
path: '/login',
meta: { title: '登录', noCache: true },
component: (resolve) => require(['@/views/login'], resolve),
hidden: true hidden: true
},
{
path: '/redirect',
component: Layout,
hidden: true,
children: [
{
path: '/redirect/:path*',
component: (resolve) => require(['@/views/features/redirect'], resolve)
} }
] ]
}
]
export default new Router({ export default new Router({
mode: 'history', mode: 'history',

4
src/utils/auth.js

@ -1,10 +1,8 @@
import Cookies from 'js-cookie';
import Cookies from 'js-cookie'
import Config from '@/settings' import Config from '@/settings'
const TokenKey = Config.TokenKey const TokenKey = Config.TokenKey
// 获取Token // 获取Token
export function getToken() { export function getToken() {
return Cookies.get(TokenKey) return Cookies.get(TokenKey)

2
src/utils/rsaEncrypt.js

@ -1,12 +1,10 @@
import JSEncrypt from 'jsencrypt/bin/jsencrypt.min' import JSEncrypt from 'jsencrypt/bin/jsencrypt.min'
// 密钥对生成:http://web.chacuo.net/netrsakeypair // 密钥对生成:http://web.chacuo.net/netrsakeypair
// 设置公钥 // 设置公钥
const publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMEOuFWzyferOY27HOOKkeNCexTXunvK\n' + const publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMEOuFWzyferOY27HOOKkeNCexTXunvK\n' +
'Bk62mavgNn6G6r9PB4gT71YdXkk/3JmnrUue3L/MPOIpAD5ZadAXdBcCAwEAAQ==' 'Bk62mavgNn6G6r9PB4gT71YdXkk/3JmnrUue3L/MPOIpAD5ZadAXdBcCAwEAAQ=='
// 设置私钥 // 设置私钥
const privateKey = 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAwQ64VbPJ96s5jbsc\n' + const privateKey = 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAwQ64VbPJ96s5jbsc\n' +
'44qR40J7FNe6e8oGTraZq+A2fobqv08HiBPvVh1eST/cmaetS57cv8w84ikAPllp\n' + '44qR40J7FNe6e8oGTraZq+A2fobqv08HiBPvVh1eST/cmaetS57cv8w84ikAPllp\n' +

75
src/views/login.vue

@ -1,87 +1,43 @@
<template> <template>
<div class="login" :style="'background-image:url(' + Background + ');'"> <div class="login" :style="'background-image:url(' + Background + ');'">
<el-form
ref="loginForm"
:model="loginForm"
:rules="loginRules"
label-position="left"
label-width="0px"
class="login-form"
>
<h3 class="title">
阅行集成后台管理
</h3>
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" label-position="left" label-width="0px" class="login-form">
<h3 class="title">阅行集成后台管理</h3>
<el-form-item prop="username"> <el-form-item prop="username">
<el-input
v-model="loginForm.username"
type="text"
auto-complete="off"
placeholder="账号"
>
<svg-icon
slot="prefix"
icon-class="user"
class="el-input__icon input-icon"
/>
<el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="账号">
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="password"> <el-form-item prop="password">
<el-input
v-model="loginForm.password"
type="password"
auto-complete="off"
placeholder="密码"
@keyup.enter.native="handleLogin"
>
<svg-icon
slot="prefix"
icon-class="password"
class="el-input__icon input-icon"
/>
<el-input v-model="loginForm.password" type="password" auto-complete="off" placeholder="密码" @keyup.enter.native="handleLogin">
<svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="code"> <el-form-item prop="code">
<el-input
v-model="loginForm.code"
auto-complete="off"
placeholder="验证码"
style="width: 63%"
@keyup.enter.native="handleLogin"
>
<svg-icon
slot="prefix"
icon-class="validCode"
class="el-input__icon input-icon"
/>
<el-input v-model="loginForm.code" auto-complete="off" placeholder="验证码" style="width: 63%" @keyup.enter.native="handleLogin">
<svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
</el-input> </el-input>
<div class="login-code"> <div class="login-code">
<img :src="codeUrl" @click="getCode" />
<img :src="codeUrl" @click="getCode">
</div> </div>
</el-form-item> </el-form-item>
<el-checkbox v-model="loginForm.rememberMe" style="margin:0 0 25px 0;"> <el-checkbox v-model="loginForm.rememberMe" style="margin:0 0 25px 0;">
记住我 记住我
</el-checkbox> </el-checkbox>
<el-form-item style="width:100%;"> <el-form-item style="width:100%;">
<el-button
:loading="loading"
size="medium"
type="primary"
style="width:100%;"
@click.native.prevent="handleLogin"
>
<el-button :loading="loading" size="medium" type="primary" style="width:100%;" @click.native.prevent="handleLogin">
<span v-if="!loading"> </span> <span v-if="!loading"> </span>
<span v-else> 中...</span> <span v-else> 中...</span>
</el-button> </el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<!-- 底部 --> <!-- 底部 -->
<div v-if="$store.state.settings.showFooter" id="el-login-footer">
<!-- <div v-if="$store.state.settings.showFooter" id="el-login-footer">
<span v-html="$store.state.settings.footerTxt" /> <span v-html="$store.state.settings.footerTxt" />
<span> </span> <span> </span>
<a href="https://beian.miit.gov.cn/#/Integrated/index" target="_blank">{{ <a href="https://beian.miit.gov.cn/#/Integrated/index" target="_blank">{{
$store.state.settings.caseNumber $store.state.settings.caseNumber
}}</a> }}</a>
</div>
</div> -->
</div> </div>
</template> </template>
@ -201,13 +157,10 @@ export default {
Cookies.remove('password') Cookies.remove('password')
Cookies.remove('rememberMe') Cookies.remove('rememberMe')
} }
this.$store
.dispatch('Login', user)
.then(() => {
this.$store.dispatch('Login', user).then(() => {
this.loading = false this.loading = false
this.$router.push({ path: this.redirect || '/' }) this.$router.push({ path: this.redirect || '/' })
})
.catch(() => {
}).catch(() => {
this.loading = false this.loading = false
this.getCode() this.getCode()
}) })

Loading…
Cancel
Save