瀏覽代碼

如果目录没有选项则隐藏操作栏

cxmo 1 年之前
父節點
當前提交
2ccde9cc3c

+ 4 - 4
src/views/chartETA/List.vue

@@ -11,17 +11,17 @@ import TreeSelectPop from './components/TreeSelectPop.vue';
 import apiChart from '@/api/chart'
 
 import {useCatalogList} from './hooks/useCatalogList';
-import {useUserInfo} from '@/hooks/common'
 
 const { width } = useWindowSize()
 const router=useRouter()
-const UserInfo = useUserInfo()
 
 const {
     optArrChart,//图表操作列表
     currentLang,//中英文标识
     catalogNodes,//目录列表
     getCatalogList,//获取图库目录
+    UserInfo,//用户信息
+    authOptArr,
 } = useCatalogList()
 
 //跳转至图表详情页
@@ -76,7 +76,7 @@ const currentNode = ref({})
 //展示操作栏
 function showFileOpt({node,optArr}){
     currentNode.value = node
-    currentOptArr.value = optArr
+    currentOptArr.value = authOptArr(node,optArr)
     showOptPopup.value = true
 }
 
@@ -360,7 +360,7 @@ getChartList()
                         <img class="img" :src="item.ChartImage" alt="">   
                         <div class="time">
                             <span>{{item.CreateTime.slice(0,10)}}</span>
-                            <span class="tool-icon" @click.stop="showFileOpt({node:item,optArr:optArrChart})">
+                            <span class="tool-icon" @click.stop="showFileOpt({node:item,optArr:optArrChart})" v-if="authOptArr(item,optArrChart).length">
                                 <img class="icon" src="@/assets/imgs/ppt/ppt_icon_menu.png" alt="">
                             </span>
                         </div>

+ 4 - 1
src/views/chartETA/components/CatalogItem.vue

@@ -12,6 +12,9 @@ const props = defineProps({
     optArr:{
         type:Array,
         default:[]
+    },
+    authOptArr:{
+        type:Function,
     }
 })
 
@@ -24,7 +27,7 @@ function showPopup(){
 <template>
     <div class="catalog-item" :class="{'leaf-padding':!showFileImg}">
         <span class="van-ellipsis" :class="{'leaf-padding':!showFileImg}">{{node.ChartClassifyName||''}}</span>
-        <div @click.stop="showPopup">
+        <div @click.stop="showPopup" v-if="authOptArr(node,optArr).length">
             <div class="menu-icon">
                 <img class="icon" src="@/assets/imgs/ppt/ppt_icon_menu.png" alt="">
             </div>

+ 3 - 1
src/views/chartETA/components/CatalogTree.vue

@@ -13,7 +13,7 @@ const emits=defineEmits(['handleCatalogItemClick'])
 //展开的目录
 const activeCatalogs = ref([])
 //目录操作栏
-const {optArrNode,optArrItem} = useCatalogList()
+const {optArrNode,optArrItem,authOptArr} = useCatalogList()
 //点击目录
 function handleCatalogItemClick(item,type,node){
     emits('handleCatalogItemClick',{item,type,parent:node})
@@ -34,6 +34,7 @@ function handleCatalogItemClick(item,type,node){
                 <CatalogItem 
                     :node="node" 
                     :optArr="optArrNode"
+                    :authOptArr="authOptArr"
                     @showPopup="showFileOpt"/>
             </template>
             <div 
@@ -46,6 +47,7 @@ function handleCatalogItemClick(item,type,node){
                     :node="item" 
                     :showFileImg="false" 
                     :optArr="optArrItem"
+                    :authOptArr="authOptArr"
                     @showPopup="showFileOpt"/>
             </div>
             </van-collapse-item>

+ 29 - 2
src/views/chartETA/hooks/useCatalogList.js

@@ -1,4 +1,4 @@
-import {getStaticImg} from '@/hooks/common'
+import {getStaticImg,useUserInfo} from '@/hooks/common'
 import {ref} from 'vue'
 import apiChart from '@/api/chart'
 export function useCatalogList(){
@@ -84,6 +84,30 @@ export function useCatalogList(){
         })
     }
 
+    const UserInfo = useUserInfo()
+    //根据权限过滤操作栏
+    function authOptArr(node,optArr){
+        let currentArr = []
+        optArr.forEach(opt=>{
+            if(checkOpt(node,opt)){
+                currentArr.push(opt)
+            }
+        })
+        return currentArr
+    }
+    function checkOpt(node,opt){
+        const {authRole} = opt
+        const {AdminId,RoleTypeCode} = UserInfo.value
+        const roleType = ['rai_admin', 'ficc_admin','admin'].includes(RoleTypeCode)?'admin':RoleTypeCode
+        if(opt.id==='moveTo'||opt.id==='moveChart'){
+            return node.SysUserId===AdminId||roleType==='admin'
+        }
+        if(authRole){
+            return authRole===roleType
+        }
+        return true
+    }
+
 
 
 
@@ -95,6 +119,9 @@ export function useCatalogList(){
 
         catalogNodes,
         currentLang,
-        getCatalogList
+        getCatalogList,
+
+        UserInfo,
+        authOptArr
     }
 }