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

Vue Element前端應(yīng)用開發(fā)之組織機(jī)構(gòu)和角色管理

 更新時(shí)間:2021年05月14日 09:04:00   作者:伍華聰  
本篇文章繼續(xù)深化Vue Element權(quán)限管理模塊管理的內(nèi)容,介紹組織機(jī)構(gòu)和角色管理模塊的處理,使得我們了解界面組件化模塊的開發(fā)思路和做法,提高我們界面設(shè)計(jì)的技巧,并減少代碼的復(fù)雜性,提高界面代碼的可讀性,同時(shí)也是利用組件的復(fù)用管理。

1、組織機(jī)構(gòu)管理模塊界面

組織機(jī)構(gòu)管理模塊界面如下所示,包括組織機(jī)構(gòu)的成員管理和角色管理,在ABP基礎(chǔ)領(lǐng)域里面,組織機(jī)構(gòu)可以包含0到多個(gè)成員,也可以包含0到多個(gè)角色,因此界面設(shè)計(jì)如下所示。

在對(duì)象UML的圖例中,應(yīng)該是如下所示的效果圖,組織機(jī)構(gòu)包含組織成員和角色的內(nèi)容。

在界面上,組織成員還需要添加成員的功能,同理角色也需要添加角色的處理,如下UML圖示。

由于添加成員也是一個(gè)界面功能,一般情況下,如果我們放在一個(gè)頁面里面,可能會(huì)增加代碼量,增加代碼維護(hù)難度和降低可讀性,因此我們可以考慮把這些添加成員、添加角色的操作放在一個(gè)獨(dú)立的組件模塊里面進(jìn)行設(shè)計(jì),然后在主頁面中引用組件即可。

組織機(jī)構(gòu)添加成員的界面是彈出一個(gè)對(duì)話框,然后在其中查詢選擇系統(tǒng)用戶列表,確認(rèn)即可完成添加成員操作。

對(duì)于添加角色操作,也是類似的處理,把它們的邏輯和界面處理,封裝為一個(gè)獨(dú)立的界面組件,這個(gè)在Vue+Element是非常方便的,也是常用隱藏復(fù)雜性的做法。添加角色界面效果如下所示,彈出對(duì)話框中選擇系統(tǒng)角色,確認(rèn)添加到對(duì)應(yīng)的組織機(jī)構(gòu)即可。

2、角色管理界面

角色管理首先也是以列表展示系統(tǒng)角色的內(nèi)容,如下界面所示。

其中每個(gè)角色,除了包含基本信息外,還會(huì)包含擁有的權(quán)限(功能控制點(diǎn))、包含用戶,以及擁有的菜單,其中權(quán)限是用來控制界面元素,如操作按鈕的顯示的,而擁有的菜單,則是用戶以指定賬號(hào)登錄系統(tǒng)后,獲得對(duì)應(yīng)角色的菜單,然后構(gòu)建對(duì)應(yīng)的訪問入口的。

角色界面模塊UML類圖如下所示。

那么對(duì)應(yīng)界面元素上,我們就應(yīng)該以不同的Tab來展示這些信息,如下所示。其中可以看到不同的Tab顯示不同的內(nèi)容。

角色包含的權(quán)限如下所示

其中擁有的菜單也是一個(gè)樹形列表,和權(quán)限類似,如下界面所示。

上面幾個(gè)圖是查看界面的內(nèi)容,而添加或者編輯角色,則需要對(duì)樹形列表進(jìn)行勾選操作,以便為角色選擇對(duì)應(yīng)的權(quán)限和擁有的菜單權(quán)限。

我們以菜單權(quán)限為例,編輯角色信息的時(shí)候,對(duì)應(yīng)的樹形列表應(yīng)該可以勾選,確認(rèn)后把勾選的用戶選擇提交到后臺(tái)保存處理

3、界面模塊化的處理

上面模塊中,涉及到多個(gè)頁面內(nèi)容的處理,如果把所有的內(nèi)容全部放在一個(gè)頁面里面,頁面內(nèi)容和JS的邏輯代碼將會(huì)比較臃腫,難以維護(hù),增加編輯界面代碼的難度。

其實(shí)界面設(shè)計(jì),也是可以以UML的類圖為規(guī)則,一個(gè)業(yè)務(wù)界面一個(gè)組件的方式來構(gòu)建界面,而界面組件可以在多個(gè)地方重用,有時(shí)候可以設(shè)計(jì)不同的屬性來區(qū)分即可。

我們回到組織機(jī)構(gòu)里面添加成員和添加角色的操作UML圖。

其中添加成員、添加角色,涉及界面的列表數(shù)據(jù)展示以及對(duì)應(yīng)的添加展示操作,獨(dú)立一個(gè)界面還是比較方便的,而且添加成員 ,在角色維護(hù)模塊里面也需要用到,那么可以兼容兩個(gè)場(chǎng)景來設(shè)計(jì)組件模塊。

完成添加成員、添加角色的界面組件后,我們就可以在組織機(jī)構(gòu)界面里面引入使用。

接著加入對(duì)應(yīng)的組件集合里面即可。

然后在界面部分加入對(duì)應(yīng)的組件呈現(xiàn)代碼,如下所示。

有了這些準(zhǔn)備,我們就可以在需要觸發(fā)界面顯示的時(shí)候,調(diào)用代碼展示對(duì)應(yīng)的對(duì)話框界面組件即可。

addUser() { // 顯示添加成員對(duì)話框
      var ouid = this.searchForm.OrganizationUnitId
      if (!ouid || typeof (ouid) === 'undefined') {
        this.msgError('請(qǐng)先選擇組織機(jī)構(gòu)!')
        return
      }
      this.$refs.selectuser.show()
    },

    addRole() { // 顯示添加成員對(duì)話框
      var ouid = this.searchForm.OrganizationUnitId
      if (!ouid || typeof (ouid) === 'undefined') {
        this.msgError('請(qǐng)先選擇組織機(jī)構(gòu)!')
        return
      }
      this.$refs.selectrole.show()
    },

對(duì)于角色模塊也是類似,我們盡可能設(shè)計(jì)更多可以重用的界面模塊,減少主模塊頁面代碼,并提高組件的復(fù)用率。

之前介紹過,角色界面模塊UML類圖如下所示。

我們也可以依據(jù)這個(gè)來對(duì)模塊的內(nèi)容進(jìn)行劃分,不同業(yè)務(wù)設(shè)計(jì)不同的界面組件,最后整合一起使用即可。

這樣我們查看角色詳細(xì)信息的時(shí)候,界面代碼就可以減少很多,只需要引入對(duì)應(yīng)的界面組件即可,如下代碼所示。

<el-dialog title="查看信息" :visible="isView" :modal-append-to-body="false" @close="closeDialog">
      <el-col>
        <el-tabs value="basicPage" type="border-card">
          <el-tab-pane name="basicPage" label="基本信息">
            <el-form ref="viewForm" :model="viewForm" label-width="120px">
              <el-form-item label="角色名">
                <el-input v-model="viewForm.name" disabled />
              </el-form-item>
              <el-form-item label="角色顯示名">
                <el-input v-model="viewForm.displayName" disabled />
              </el-form-item>
              <el-form-item label="角色描述">
                <el-input v-model="viewForm.description" type="textarea" disabled />
              </el-form-item>
            </el-form>
          </el-tab-pane>

          <el-tab-pane name="permitPage" label="權(quán)限">
            <rolefunction ref="rolefunction" :role-id="selectRoleId" />
          </el-tab-pane>

          <el-tab-pane name="userPage" label="用戶">
            <roleuser ref="roleuser" :role-id="selectRoleId" :can-add="false" :can-delete="false" />
          </el-tab-pane>

          <el-tab-pane name="menuPage" label="菜單">
            <rolemenu ref="rolemenu" :role-id="selectRoleId" />
          </el-tab-pane>
        </el-tabs>
      </el-col>
      <div slot="footer" class="dialog-footer">
        <el-button type="success" @click="closeDialog">關(guān)閉</el-button>
      </div>
    </el-dialog>

上面著重部分就是引入對(duì)應(yīng)的界面組件,這樣在編輯界面里面,我們依舊可以重用這部分的界面組件,界面組件的界面內(nèi)容展示控制是內(nèi)處理的,我們?cè)谥鹘缑娌挥霉芾?,非常方便?/p>

角色查看詳細(xì)界面效果如下所示。

角色的編輯界面代碼如下所示。

<el-dialog title="編輯信息" :visible="isEdit" :modal-append-to-body="false" @close="closeDialog">
      <el-col>
        <el-tabs value="basicPage2" type="border-card">
          <el-tab-pane name="basicPage2" label="基本信息">
            <el-form ref="editForm" :rules="rules" :model="editForm" label-width="120px">
              <el-form-item label="角色名">
                <el-input v-model="editForm.name" />
              </el-form-item>
              <el-form-item label="角色顯示名">
                <el-input v-model="editForm.displayName" />
              </el-form-item>
              <el-form-item label="角色描述">
                <el-input v-model="editForm.description" type="textarea" />
              </el-form-item>
            </el-form>
          </el-tab-pane>
          <el-tab-pane name="permitPage2" label="權(quán)限">
            <rolefunction ref="rolefunction2" :showcheck="true" :role-id="selectRoleId" />
          </el-tab-pane>

          <el-tab-pane name="userPage2" label="用戶">
            <roleuser ref="roleuser2" :role-id="selectRoleId" :can-add="true" :can-delete="true" />
          </el-tab-pane>

          <el-tab-pane name="menuPage2" label="菜單">
            <rolemenu ref="rolemenu2" :showcheck="true" :role-id="selectRoleId" />
          </el-tab-pane>
        </el-tabs>
      </el-col>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="saveEdit()">確定</el-button>
        <el-button type="success" @click="closeDialog">關(guān)閉</el-button>
      </div>
    </el-dialog>
  </div>

角色的編輯界面效果如下所示。

在界面組件模塊里面,如果我們需要接受父組件或界面調(diào)用的時(shí)候,傳入?yún)?shù)使用Props來定義即可。

而如果需要組件返回對(duì)應(yīng)的內(nèi)容,如勾選樹列表的選項(xiàng),那么我們?cè)诮M件定義中設(shè)計(jì)一個(gè)函數(shù)用來返回組件的內(nèi)容即可。

這樣我們?cè)诟复翱诨蛘吒附M件中就可以獲得子組件的數(shù)據(jù)了。

通過上面的介紹,我們應(yīng)該理解到,盡可能按界面展示業(yè)務(wù)邏輯來區(qū)分不同的組件模塊,可以極大降低主界面的維護(hù)復(fù)雜性,而且界面組件也是內(nèi)聚處理的,因此使用的時(shí)候也是非常方便。

通過設(shè)計(jì)不同的界面組件,我們可以組織起來更加強(qiáng)大的界面展示,而并不影響維護(hù)的比便利性,這個(gè)就是模塊化處理的優(yōu)勢(shì)所在。

以上就是Vue Element前端應(yīng)用開發(fā)之組織機(jī)構(gòu)和角色管理的詳細(xì)內(nèi)容,更多關(guān)于Vue Element之組織機(jī)構(gòu)和角色管理的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 學(xué)習(xí) Vue.js 遇到的那些坑

    學(xué)習(xí) Vue.js 遇到的那些坑

    這篇文章主要介紹了學(xué)習(xí) Vue.js 遇到的那些坑,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2021-02-02
  • Vue3 Suspense處理異步組件加載的工作原理

    Vue3 Suspense處理異步組件加載的工作原理

    Vue3在新版本中提供了一個(gè)新的API,稱為Suspense,它可以使異步組件的加載更加高效和流暢,在本文中,我們將詳細(xì)了解 Vue3 Suspense 處理異步組件加載的工作原理以及如何使用它來提高 Web 應(yīng)用程序的性能
    2023-06-06
  • 解決npm安裝錯(cuò)誤:No matching version found for XXX@3.3.6問題

    解決npm安裝錯(cuò)誤:No matching version found for&

    這篇文章主要介紹了解決npm安裝錯(cuò)誤:No matching version found for XXX@3.3.6問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Vue.use的原理和設(shè)計(jì)源碼探究

    Vue.use的原理和設(shè)計(jì)源碼探究

    這篇文章主要為大家介紹了Vue.use的原理和設(shè)計(jì)源碼探究詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 解決axios發(fā)送post請(qǐng)求上傳文件到后端的問題(multipart/form-data)

    解決axios發(fā)送post請(qǐng)求上傳文件到后端的問題(multipart/form-data)

    這篇文章主要介紹了如何使用axios發(fā)送post請(qǐng)求上傳文件到后端(multipart/form-data),本文給大家?guī)砹藛栴}原因及解決方案,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • 在vue2.0中引用element-ui組件庫的方法

    在vue2.0中引用element-ui組件庫的方法

    這篇文章主要介紹了在vue2.0中引用element-ui組件庫,需要的朋友可以參考下
    2018-06-06
  • Vue項(xiàng)目利用axios請(qǐng)求接口下載excel

    Vue項(xiàng)目利用axios請(qǐng)求接口下載excel

    這篇文章主要為大家詳細(xì)介紹了Vue項(xiàng)目利用axios請(qǐng)求接口下載excel,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • vue h5移動(dòng)端禁止縮放代碼

    vue h5移動(dòng)端禁止縮放代碼

    今天小編就為大家分享一篇vue h5移動(dòng)端禁止縮放代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • Vue中的transition封裝組件的實(shí)現(xiàn)方法

    Vue中的transition封裝組件的實(shí)現(xiàn)方法

    這篇文章主要介紹了Vue中的transition封裝組件的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • vite前端構(gòu)建Turborepo高性能monorepo方案

    vite前端構(gòu)建Turborepo高性能monorepo方案

    這篇文章主要為大家介紹了vite前端構(gòu)建Turborepo高性能monorepo方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08

最新評(píng)論

宁陵县| 逊克县| 边坝县| 乌拉特后旗| 静宁县| 绍兴市| 宁远县| 观塘区| 太谷县| 富顺县| 乃东县| 桓台县| SHOW| 玉林市| 华容县| 邵阳市| 金沙县| 英山县| 策勒县| 郧西县| 竹北市| 龙游县| 上高县| 遂溪县| 吴旗县| 桃园市| 枣阳市| 平果县| 鄂托克前旗| 通许县| 洪江市| 苏尼特右旗| 通海县| 江北区| 南城县| 珲春市| 海门市| 积石山| 马龙县| 冀州市| 伊金霍洛旗|