最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue自定義權(quán)限標(biāo)簽詳細(xì)代碼示例

 更新時間:2023年09月15日 11:19:52   作者:ByCode  
這篇文章主要給大家介紹了關(guān)于vue自定義權(quán)限標(biāo)簽的相關(guān)資料,在Vue中你可以通過創(chuàng)建自定義組件來實現(xiàn)自定義標(biāo)簽組件,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下

技術(shù)棧

  • vuex
  • vue自定義標(biāo)簽

開門見山

1、創(chuàng)建directive

hasPermi.js

 /**
 * v-hasPermi 操作權(quán)限處理
 */
import store from '@/store'
export default {
  inserted(el, binding, vnode) {
    const { value } = binding
    const all_permission = "*:*:*";
    const permissions = store.getters && store.getters.permissions
    if (value && value instanceof Array && value.length > 0) {
      const permissionFlag = value
      const hasPermissions = permissions.some(permission => {
        return all_permission === permission || permissionFlag.includes(permission)
      })
      if (!hasPermissions) {
        el.parentNode && el.parentNode.removeChild(el)
      }
    } else {
      throw new Error(`請設(shè)置操作權(quán)限標(biāo)簽值`)
    }
  }
}

index.js

import hasPermi from './permission/hasPermi'
const install = function(Vue) {
  Vue.directive('hasPermi', hasPermi)
}
if (window.Vue) {
  window['hasPermi'] = hasPermi
  Vue.use(install); // eslint-disable-line
}
export default install

2、store

user.js

import {getPermissions} from "@/api/token/assets";
import async from "async";
const user = {
    state: {
        permissions: []
    },
    mutations: {
        SET_PERMISSIONS: (state, permissions) => {
            state.permissions = permissions
        }
    },
    actions: {
        // 獲取用戶信息
        GetInfo({commit}, query) {
            return new Promise((resolve, reject) => {
                // 獲取權(quán)限信息(請求后臺數(shù)據(jù)接口)
                getPermissions(query).then(res => {
                    if ( res.code == 200 ) {
                        commit('SET_PERMISSIONS', res.data)
                    }
                    resolve(res)
                }).catch(error => {
                    reject(error)
                })
            })
        }
    }
}
export default user

getters.js

const getters = {
  token: state => state.user.token,
  permissions: state => state.user.permissions
}
export default getters

index.js

import Vue from 'vue'
import Vuex from 'vuex'
import user from './modules/user'
import getters from './getters'
Vue.use(Vuex)
const store = new Vuex.Store({
  modules: {
    user
  },
  getters
})
export default store

3、src目錄下創(chuàng)建permission.js

import router from './router'
import store from './store'
import { Message } from 'element-ui'
router.beforeEach((to, from, next) => {
  // to.query 獲取url路由請求參數(shù),傳遞給后端使用
  store.dispatch('GetInfo',to.query).then(() => {
    next()
  }).catch(err => {
    Message.error(err)
  })
})

4、src下的main.js使用

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import directive from './directive' // directive
import store from './store'
import './permission' // permission control
Vue.use(ElementUI)
Vue.use(directive)
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

5、按鈕標(biāo)簽

 <el-button
              size="mini"
              type="text"
              icon="el-icon-delete"
              @click="handleDelete(scope.row)"
              v-hasPermi="['btn:delete']"
          >刪除
          </el-button>

說明:

如果后臺接口返回的按鈕權(quán)限數(shù)據(jù)里包含btn:delete則刪除按鈕顯示,否則不顯示

后臺返回數(shù)據(jù)如下:

[
  "btn:list", 
  "btn:add", 
  "btn:delete", 
  "btn:edit"
]

總結(jié) 

到此這篇關(guān)于vue自定義權(quán)限標(biāo)簽的文章就介紹到這了,更多相關(guān)vue自定義權(quán)限標(biāo)簽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue.js實現(xiàn)價格計算器功能

    Vue.js實現(xiàn)價格計算器功能

    這篇文章主要為大家詳細(xì)介紹了Vue.js實現(xiàn)價格計算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • vue+springboot前后端分離實現(xiàn)單點登錄跨域問題解決方法

    vue+springboot前后端分離實現(xiàn)單點登錄跨域問題解決方法

    這篇文章主要介紹了vue+springboot前后端分離實現(xiàn)單點登錄跨域問題的解決方法,需要的朋友可以參考下
    2018-01-01
  • Vue組件通信之父傳子與子傳父詳細(xì)講解

    Vue組件通信之父傳子與子傳父詳細(xì)講解

    這篇文章主要介紹了React中父子組件通信詳解,在父組件中,為子組件添加屬性數(shù)據(jù),即可實現(xiàn)父組件向子組件通信,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-10-10
  • Vue實現(xiàn)文本編譯詳情

    Vue實現(xiàn)文本編譯詳情

    這篇文章主要介紹了Vue實現(xiàn)文本編譯詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下,希望對你的學(xué)習(xí)有所幫助
    2022-08-08
  • 使用vue自定義如何實現(xiàn)Tree組件和拖拽功能

    使用vue自定義如何實現(xiàn)Tree組件和拖拽功能

    這篇文章主要介紹了使用vue自定義如何實現(xiàn)Tree組件和拖拽功能,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Vue條件渲染與列表渲染

    Vue條件渲染與列表渲染

    這篇文章主要介紹了Vue條件渲染與列表渲染,條件渲染包括v-if、v-show等內(nèi)容,文章對條件渲染及列表渲染介紹詳細(xì),具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • vue組件值變化但不刷新強(qiáng)制組件刷新的問題

    vue組件值變化但不刷新強(qiáng)制組件刷新的問題

    這篇文章主要介紹了vue組件值變化但不刷新強(qiáng)制組件刷新的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 一起來做一下Vue全局提示組件

    一起來做一下Vue全局提示組件

    前端開發(fā)的時候,在項目中引入組件以及使用是非常常見操作,下面這篇文章主要給大家介紹了關(guān)于Vue全局提示組件的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • VueTreeselect?參數(shù)options的數(shù)據(jù)轉(zhuǎn)換-參數(shù)normalizer解析

    VueTreeselect?參數(shù)options的數(shù)據(jù)轉(zhuǎn)換-參數(shù)normalizer解析

    這篇文章主要介紹了VueTreeselect?參數(shù)options的數(shù)據(jù)轉(zhuǎn)換-參數(shù)normalizer解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • vue-cli項目優(yōu)化方法- 縮短首屏加載時間

    vue-cli項目優(yōu)化方法- 縮短首屏加載時間

    這篇文章主要介紹了vue-cli項目優(yōu)化 縮短首屏加載時間,需要的朋友可以參考下
    2018-04-04

最新評論

永德县| 新巴尔虎右旗| 河北区| 柯坪县| 黎城县| 革吉县| 萍乡市| 靖西县| 玉屏| SHOW| 北票市| 莒南县| 松滋市| 恩施市| 揭东县| 梧州市| 新邵县| 双流县| 威海市| 宁陵县| 钦州市| 郓城县| 大悟县| 霍山县| 息烽县| 兴山县| 牡丹江市| 集贤县| 依安县| 鞍山市| 海淀区| 台安县| 南部县| 兴化市| 日喀则市| 神农架林区| 洛扎县| 白水县| 东山县| 牙克石市| 化隆|