Skip to content

Commit 32e14a4

Browse files
committed
feat: 改造directive
1 parent 129cda0 commit 32e14a4

7 files changed

Lines changed: 34 additions & 101 deletions

File tree

src/lin/directive/README.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

src/lin/directive/authorize.js

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
import Vue from 'vue'
22
import store from '@/store'
33

4+
/**
5+
* 判断是否允许访问该DOM
6+
* @param {*} permission 权限
7+
* @param {*} user 当前用户实例
8+
* @param {*} permissions 当前管理员所在分组权限集
9+
*/
410
function isAllowed(permission, user, permissions) {
511
if (user.admin) {
612
return true
713
}
14+
815
if (typeof permission === 'string') {
916
return permissions.includes(permission)
1017
}
@@ -15,9 +22,11 @@ function isAllowed(permission, user, permissions) {
1522
}
1623

1724
Vue.directive('permission', {
18-
bind(el, binding) {
19-
let permission
25+
beforeMount(el, binding) {
2026
let type
27+
let permission
28+
const element = el
29+
2130
if (Object.prototype.toString.call(binding.value) === '[object Object]') {
2231
// eslint-disable-next-line prefer-destructuring
2332
permission = binding.value.permission
@@ -27,7 +36,6 @@ Vue.directive('permission', {
2736
permission = binding.value
2837
}
2938
const isAllow = isAllowed(permission, store.state.user || {}, store.state.permissions)
30-
const element = el
3139
if (!isAllow && permission) {
3240
if (type) {
3341
element.disabled = true

src/lin/directive/index.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
import './ripple'
21
import './authorize'

src/lin/directive/ripple.js

Lines changed: 0 additions & 61 deletions
This file was deleted.

src/lin/util/sse.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import Vue from 'vue'
1+
import { Message } from 'element-ui'
2+
23
// import EventSourcePolyfill from 'event-source-polyfill'
34
import 'event-source-polyfill/src/eventsource'
45
import { getToken } from './cookie'
@@ -45,11 +46,7 @@ export default class Sse {
4546
// console.log('receive one message: ', event.data)
4647
// console.log('receive one message: ', event.lastEventId)
4748
store.commit('ADD_UNREAD_MESSAGE', { data: event.data, id: event.lastEventId })
48-
Vue.prototype.$notify({
49-
title: '您有新的消息',
50-
dangerouslyUseHTMLString: true,
51-
message: `<strong class="my-notify">${JSON.parse(event.data).message}</strong>`,
52-
})
49+
Message.warning(JSON.parse(event.data).message)
5350
})
5451
}
5552
}

src/main.js

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,35 @@
1-
import Vue, { createApp } from 'vue'
2-
import VueCompositionApi from '@vue/composition-api'
3-
import ElementUI from 'element-ui'
1+
import { createApp } from 'vue'
42

53
import '@/config/global'
64
import '@/lin/plugin'
7-
import '@/lin/directive'
8-
95
import CollapseTransition from 'element-ui/lib/transitions/collapse-transition'
10-
import LinNotify from '@/component/notify'
11-
import router from '@/router'
12-
import store from '@/store'
6+
import directives from '@/lin/directive'
7+
138
import App from '@/app.vue'
9+
import store from '@/store'
10+
import router from '@/router'
1411

15-
import StickyTop from '@/component/base/sticky-top/sticky-top'
1612
import LIcon from '@/component/base/icon/lin-icon'
13+
import StickyTop from '@/component/base/sticky-top/sticky-top'
1714
import SourceCode from '@/component/base/source-code/source-code'
1815

1916
import '@/assets/style/index.scss' // eslint-disable-line
2017
import '@/assets/style/realize/element-variable.scss'
2118
import 'element-ui/lib/theme-chalk/display.css'
2219

23-
Vue.component(CollapseTransition.name, CollapseTransition)
20+
const app = createApp(App)
21+
22+
app.component(CollapseTransition.name, CollapseTransition)
2423

2524
// base 组件注册
26-
Vue.component('sticky-top', StickyTop)
27-
Vue.component('l-icon', LIcon)
28-
Vue.component('source-code', SourceCode)
25+
app.component('l-icon', LIcon)
26+
app.component('sticky-top', StickyTop)
27+
app.component('source-code', SourceCode)
2928

30-
/* eslint no-unused-vars: 0 */
31-
const AppInstance = createApp(App)
32-
.use(router)
33-
.use(store)
34-
.mount('#app')
29+
app.use(router)
30+
app.use(store)
31+
app.directive(directives)
32+
app.mount('#app')
3533

3634
// 设置 App 实例
37-
window.App = AppInstance
35+
window.App = app

src/router/index.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import Vue from 'vue'
21
import { createRouter } from 'vue-router'
2+
import { Message } from 'element-ui'
3+
34
import routes from './route'
45
import store from '../store'
56
import appConfig from '@/config/index'
@@ -55,11 +56,7 @@ router.beforeEach((to, from, next) => {
5556
if (store && store.state && store.getters) {
5657
const { permissions, user } = store.getters
5758
if (to.path !== '/about' && !Util.hasPermission(permissions, to.meta, user)) {
58-
Vue.prototype.$notify({
59-
title: '无权限',
60-
dangerouslyUseHTMLString: true,
61-
message: '<strong class="my-notify">您无此页面的权限哟</strong>',
62-
})
59+
Message.error('您无此页面的权限哟')
6360
next({ path: '/about' })
6461
return
6562
}

0 commit comments

Comments
 (0)