国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue自定義權(quán)限標(biāo)簽

這篇具有很好參考價值的文章主要介紹了vue自定義權(quán)限標(biāo)簽。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

vue自定義權(quán)限標(biāo)簽

技術(shù)棧

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

開門見山

  1. 創(chuàng)建directive

v-has-permi,vue.js,前端,javascript

  • 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
    
    
  1. store

v-has-permi,vue.js,前端,javascript

  • 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
    
    
  1. 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)
      })
    })
    
    
  2. 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')
    
  3. 按鈕標(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ù)如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-559565.html

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

到了這里,關(guān)于vue自定義權(quán)限標(biāo)簽的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 前端Vue自定義可自由滾動精美tabs選項卡標(biāo)簽欄標(biāo)題欄 可設(shè)置背景顏色,

    前端Vue自定義可自由滾動精美tabs選項卡標(biāo)簽欄標(biāo)題欄 可設(shè)置背景顏色,

    前端Vue自定義可自由滾動精美tabs選項卡標(biāo)簽欄標(biāo)題欄 可設(shè)置背景顏色,?閱讀全文下載完整代碼請關(guān)注微信公眾號: 前端組件開發(fā) 效果圖如下: 使用方法 HTML代碼實現(xiàn)部分

    2024年02月11日
    瀏覽(30)
  • Vue前端 更具router.js 中的meta的roles實現(xiàn)路由衛(wèi)士,實現(xiàn)權(quán)限判斷。

    Vue前端 更具router.js 中的meta的roles實現(xiàn)路由衛(wèi)士,實現(xiàn)權(quán)限判斷。

    參考了之篇文章 1、我在登陸時獲取到登錄用戶的角色名roles,并存入sessionStorage中,具體是在login頁面實現(xiàn),還是在menu頁面實現(xiàn)都可以。在menu頁面實現(xiàn),可以顯得登陸快一些。 2、編寫router.js,注意,一個用戶可能有多個角色。 這里有個bug 我們的roles存在sessionStorage中,關(guān)閉

    2024年02月13日
    瀏覽(20)
  • 前端Vue自定義驗證碼密碼登錄切換tabs選項卡標(biāo)簽欄標(biāo)題欄 驗證碼登錄模版 密碼登錄模版

    前端Vue自定義驗證碼密碼登錄切換tabs選項卡標(biāo)簽欄標(biāo)題欄 驗證碼登錄模版 密碼登錄模版

    前端Vue自定義驗證碼密碼登錄切換tabs選項卡標(biāo)簽欄標(biāo)題欄 驗證碼登錄模版 密碼登錄模版, 請訪問uni-app插件市場地址:https://ext.dcloud.net.cn/plugin?id=13221 效果圖如下: 實現(xiàn)代碼如下: 使用方法 HTML代碼實現(xiàn)部分 組件實現(xiàn)代碼

    2024年02月11日
    瀏覽(27)
  • 前端Vue自定義商品評價頁面單選多選標(biāo)簽tags組件單選多選按鈕選擇器picker組件

    前端Vue自定義商品評價頁面單選多選標(biāo)簽tags組件單選多選按鈕選擇器picker組件

    隨著技術(shù)的發(fā)展,開發(fā)的復(fù)雜度也越來越高,傳統(tǒng)開發(fā)方式將一個系統(tǒng)做成了整塊應(yīng)用,經(jīng)常出現(xiàn)的情況就是一個小小的改動或者一個小功能的增加可能會引起整體邏輯的修改,造成牽一發(fā)而動全身。 通過組件化開發(fā),可以有效實現(xiàn)單獨開發(fā),單獨維護,而且他們之間可以隨

    2024年02月16日
    瀏覽(59)
  • 前端下拉框select標(biāo)簽的插件——select2.js

    本文采用的是select2 版本: Select2 4.0.6-rc.1。 可以兼容IE8及以上。親測過。 官網(wǎng):Getting Started | Select2 - The jQuery replacement for select boxes

    2024年02月01日
    瀏覽(38)
  • 前端權(quán)限驗證之自定義指令v-permission

    使用vue自定義指令來v-permission 來控制按鈕 在代碼中使用 可以使用全局權(quán)限判斷函數(shù),用法和指令 v-permission 類似。

    2024年02月14日
    瀏覽(11)
  • 前端Vue:權(quán)限管理,給角色分配權(quán)限

    前端Vue:權(quán)限管理,給角色分配權(quán)限

    ??前端-Vue權(quán)限控制,菜單權(quán)限,按鈕權(quán)限_一人創(chuàng)客的博客-CSDN博客 目錄 介紹: 前端權(quán)限的概念: 前端權(quán)限的意義: Vue權(quán)限管理的代碼實現(xiàn): 菜單 刷新界?菜單消失 標(biāo)識?戶名, ?便查看當(dāng)前?戶 退出登陸:? 界面: 1.判斷當(dāng)前是否登陸 2.控制是否可以訪問角色界面 (

    2024年02月11日
    瀏覽(18)
  • uniapp JS文件里面調(diào)用自定義組件(不用每個頁面在template中加組件標(biāo)簽)

    uniapp JS文件里面調(diào)用自定義組件(不用每個頁面在template中加組件標(biāo)簽)

    前言 工具:uniapp ( Vue2 ) 開發(fā)端:微信小程序 其他:uview 2.0 場景:路由器里面,統(tǒng)一驗證是否已登錄,如果沒登錄,則直接彈出登錄彈窗出來,不管哪個頁面都可以直接彈出此組件不需每個頁面去加入組件標(biāo)簽。 效果如下: 直接上代碼: 第一步:組件封裝 components目錄下

    2024年02月16日
    瀏覽(23)
  • 前端權(quán)限校驗(以Vue2為例)

    前端權(quán)限校驗是一種在前端代碼中進行權(quán)限驗證的方法,用于保護系統(tǒng)資源和數(shù)據(jù)的安全性。它可以確保只有具有合適權(quán)限的用戶才能訪問受限資源。 路由級別權(quán)限控制:通過在前端路由中配置權(quán)限信息,可以控制用戶能夠訪問的頁面。在訪問每個頁面之前,校驗用戶的權(quán)限

    2024年02月16日
    瀏覽(28)
  • 3d標(biāo)簽云實現(xiàn)過程(tagcloud.js)同步原生和 vue

    3d標(biāo)簽云實現(xiàn)過程(tagcloud.js)同步原生和 vue

    寫在前面 本來是沒有準(zhǔn)備寫這個知識點,但是下載這個 js 的時候發(fā)現(xiàn)很多都是要錢或者是積分的,我就不明白了一個開源了這么久的 js 怎么還有人拿來掙錢的,同時還有一些只有原生 html 的例子,但是現(xiàn)在都是 框架主導(dǎo)的一些項目,顯然是不行的,這篇文章就簡單的寫一下

    2024年02月04日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包