Browse Source

补充ETA指标库的权限

cxmo 1 year ago
parent
commit
990c3d61bf

+ 1 - 1
src/directives/AuthBtn.js

@@ -1,6 +1,6 @@
 //按钮权限指令
 //按钮权限指令
 //eg: v-permission="buttonCode"
 //eg: v-permission="buttonCode"
-//元素必须在组件内存在父元素,否则不起作用
+//元素必须在组件内存在父元素,否则el.parentNode.removeChild不起作用
 import {useAuthBtnStore} from '@/store/modules/authBtn'
 import {useAuthBtnStore} from '@/store/modules/authBtn'
 export default {
 export default {
     mounted(el, binding) {
     mounted(el, binding) {

+ 27 - 1
src/hooks/useAuthBtn.js

@@ -54,7 +54,33 @@ export const enPPTBtn={
 /*
 /*
 --------------------------ETA指标库---------------
 --------------------------ETA指标库---------------
 */
 */
-export const edbDataBtn={}
+export const edbDataBtn={
+        /*-----------指标详情按钮--------- */
+        edbData_refreshAll:'edbData:refreshAll',//全部刷新
+        edbData_newestValue:'edbData:newestValue',//添加最新值
+        edbData_enNameSetting:'edbData:enNameSetting',//设置英文名称
+        edbData_edbSource:'edbData:edbSource',//指标溯源
+        edbData_copyData:'edbData:copyData',//复制数据
+        edbData_edit:'edbData:edit',//指标编辑,也包括列表项的编辑按钮
+        edbData_update:'edbData:update',//更新指标
+        edbData_saveEdb:'edbData:saveEdb',//保存
+        edbData_deleteEdb:'edbData:deleteEdb',//删除
+        edbData_showChartBasis:'edbData:showChartBasis',//展示/隐藏同比图
+        edbData_switchSeason:'edbData:switchSeason',//切换季节性图
+        edbData_editLimit:'edbData:editLimit',//编辑上下限
+        edbData_calculateAgain:'edbData:calculateAgain',//重新计算
+        /*------------页面按钮---------- */
+        edbData_replaceEdb:'edbData:replaceEdb',//替换指标
+        edbData_calcuEdb:'edbData:calcuEdb',//计算指标
+        edbData_addEdb:'edbData:addEdb',//添加指标
+        edbData_switchEn:'edbData:switchEn',//切换英文版
+        edbData_classifyOpt_add:'edbData:classifyOpt:add',//添加/编辑分类
+        edbData_classifyOpt_delete:'edbData:classifyOpt:delete',//删除分类
+        edbData_classifyOpt_move:'edbData:classifyOpt:move',//移动分类
+        edbData_checkRelatedChart:'edbData:checkRelatedChart',//查看关联图表
+        edbData_checkRelatedEdb:'edbData:checkRelatedEdb',//查看关联指标
+        edbData_checkCalcChart:'edbData:checkCalcChart',//查看计算指标
+}
 
 
 /*
 /*
 -------------------------ETA图库------------------
 -------------------------ETA图库------------------

+ 27 - 12
src/views/dataEDB/Detail.vue

@@ -14,6 +14,8 @@ import {useCopyEdbData} from '@/hooks/edb/useCopyEdbData'
 import {useEDBDelete} from './hooks/useEDBDelete'
 import {useEDBDelete} from './hooks/useEDBDelete'
 import {useCachedViewsStore} from '@/store/modules/cachedViews'
 import {useCachedViewsStore} from '@/store/modules/cachedViews'
 import { useWindowSize } from '@vueuse/core'
 import { useWindowSize } from '@vueuse/core'
+import {edbDataBtn,useAuthBtn} from '@/hooks/useAuthBtn'
+const {checkAuthBtn} = useAuthBtn()
 
 
 const { width } = useWindowSize()
 const { width } = useWindowSize()
 const cachedViewsStore=useCachedViewsStore()
 const cachedViewsStore=useCachedViewsStore()
@@ -178,6 +180,15 @@ async function handleCalculateReset(){
 function handleSave(){
 function handleSave(){
     chartDetailIns?.value.handleSaveChartLimit()
     chartDetailIns?.value.handleSaveChartLimit()
 }
 }
+function isMoreOptShow(){
+    return checkAuthBtn(edbDataBtn.edbData_enNameSetting)
+        || (edbInfo.value.Button.InsertNewDataButton&&checkAuthBtn(edbDataBtn.edbData_newestValue))
+        || (edbInfo.value.EdbType===1&&checkAuthBtn(edbDataBtn.edbData_refreshAll))
+        || (edbInfo.value.EdbType===2&&checkAuthBtn(edbDataBtn.edbData_edbSource))
+        || (edbInfo.value.EdbType===2&&checkAuthBtn(edbDataBtn.edbData_calculateAgain))
+        || (activeType.value==='chart'&&checkAuthBtn(edbDataBtn.edbData_saveEdb))
+        || checkAuthBtn(edbDataBtn.edbData_deleteEdb)
+}
 
 
 </script>
 </script>
 
 
@@ -203,23 +214,23 @@ function handleSave(){
             </van-tab>
             </van-tab>
         </van-tabs>
         </van-tabs>
         <div class="fix-bottom-box">
         <div class="fix-bottom-box">
-            <div class="item" @click="handleRefreshEDBInfo">
+            <div class="item" @click="handleRefreshEDBInfo" v-permission="edbDataBtn.edbData_update">
                 <img class="icon" src="@/assets/imgs/report/icon_refresh.png" alt="">
                 <img class="icon" src="@/assets/imgs/report/icon_refresh.png" alt="">
                 <span>刷新</span>
                 <span>刷新</span>
             </div>
             </div>
-            <div class="item" v-if="edbInfo.Button.OpButton" @click="handleEdit">
+            <div class="item" v-if="edbInfo.Button.OpButton&&checkAuthBtn(edbDataBtn.edbData_edit)" @click="handleEdit">
                 <img class="icon" src="@/assets/imgs/dataEDB/icon_edit.png" alt="">
                 <img class="icon" src="@/assets/imgs/dataEDB/icon_edit.png" alt="">
                 <span>编辑</span>
                 <span>编辑</span>
             </div>
             </div>
-            <div class="item" v-if="activeType==='chart'" @click="handleShowLimit">
+            <div class="item" v-if="activeType==='chart'&&checkAuthBtn(edbDataBtn.edbData_editLimit)" @click="handleShowLimit">
                 <img class="icon" src="@/assets/imgs/myETA/icon_limit.png" alt="">
                 <img class="icon" src="@/assets/imgs/myETA/icon_limit.png" alt="">
                 <div>上下限</div>
                 <div>上下限</div>
             </div>
             </div>
-            <div class="item" v-if="activeType==='data'" @click="handleCopyData">
+            <div class="item" v-if="activeType==='data'&&checkAuthBtn(edbDataBtn.edbData_copyData)" @click="handleCopyData">
                 <img class="icon" src="@/assets/imgs/myETA/icon_copy.png" alt="">
                 <img class="icon" src="@/assets/imgs/myETA/icon_copy.png" alt="">
                 <div>复制</div>
                 <div>复制</div>
             </div>
             </div>
-            <div class="item" @click="showMoreOpt=true">
+            <div class="item" @click="showMoreOpt=true" v-if="isMoreOptShow()">
                 <img class="icon" src="@/assets/imgs/myETA/icon_menu.png" alt="">
                 <img class="icon" src="@/assets/imgs/myETA/icon_menu.png" alt="">
                 <div>更多</div>
                 <div>更多</div>
             </div>
             </div>
@@ -244,16 +255,20 @@ function handleSave(){
             <ul class="edb-opt-list">
             <ul class="edb-opt-list">
                 <li class="van-ellipsis item name">{{edbInfo.EdbName}}</li>
                 <li class="van-ellipsis item name">{{edbInfo.EdbName}}</li>
 
 
-                <li class="item" @click="showSetEn=true">设置英文名称</li>
                 <li class="item" 
                 <li class="item" 
-                    v-if="edbInfo.Button.InsertNewDataButton"
+                    v-if="checkAuthBtn(edbDataBtn.edbData_enNameSetting)"
+                    @click="showSetEn=true">设置英文名称</li>
+                <li class="item" 
+                    v-if="edbInfo.Button.InsertNewDataButton&&checkAuthBtn(edbDataBtn.edbData_newestValue)"
                     @click="showSetNewData=true"
                     @click="showSetNewData=true"
                 >{{edbInfo.DataInsertConfig.Date?'编辑最新值':'添加最新值'}}</li>
                 >{{edbInfo.DataInsertConfig.Date?'编辑最新值':'添加最新值'}}</li>
-                <li class="item" v-if="edbInfo.EdbType===1" @click="handleRefreshBaseEDBData">全部刷新</li>
-                <li class="item" v-if="edbInfo.EdbType===2" @click="showEDBHistory=true">指标溯源</li>
-                <li class="item" v-if="edbInfo.EdbType===2" @click="handleCalculateReset">重新计算</li>  
-                <li class="item" v-if="activeType==='chart'" @click="handleSave">保存</li>
-                <li class="item color-red" @click="handleEDBDelete">删除</li>
+                <li class="item" v-if="edbInfo.EdbType===1&&checkAuthBtn(edbDataBtn.edbData_refreshAll)" @click="handleRefreshBaseEDBData">全部刷新</li>
+                <li class="item" v-if="edbInfo.EdbType===2&&checkAuthBtn(edbDataBtn.edbData_edbSource)" @click="showEDBHistory=true">指标溯源</li>
+                <li class="item" v-if="edbInfo.EdbType===2&&checkAuthBtn(edbDataBtn.edbData_calculateAgain)" @click="handleCalculateReset">重新计算</li>  
+                <li class="item" v-if="activeType==='chart'&&checkAuthBtn(edbDataBtn.edbData_saveEdb)" @click="handleSave">保存</li>
+                <li class="item color-red" 
+                    v-if="checkAuthBtn(edbDataBtn.edbData_deleteEdb)"
+                    @click="handleEDBDelete">删除</li>
             </ul>
             </ul>
         </template>
         </template>
     </van-action-sheet>
     </van-action-sheet>

+ 50 - 20
src/views/dataEDB/Index.vue

@@ -1,5 +1,5 @@
 <script setup name="DataEDBIndex">
 <script setup name="DataEDBIndex">
-import {reactive,ref, watch} from 'vue'
+import {computed, reactive,ref, watch} from 'vue'
 import apiDataEDB from '@/api/dataEDB'
 import apiDataEDB from '@/api/dataEDB'
 import {apiCommonSetSysConfig,apiGetLanguageConfig} from '@/api/common'
 import {apiCommonSetSysConfig,apiGetLanguageConfig} from '@/api/common'
 import EDBClassify from './components/EDBClassify.vue'
 import EDBClassify from './components/EDBClassify.vue'
@@ -8,6 +8,8 @@ import {useRouter} from 'vue-router'
 import {useCachedViewsStore} from '@/store/modules/cachedViews'
 import {useCachedViewsStore} from '@/store/modules/cachedViews'
 import langIconZH from '@/assets/imgs/chartETA/lang-icon.png'
 import langIconZH from '@/assets/imgs/chartETA/lang-icon.png'
 import langIconEN from '@/assets/imgs/chartETA/langEn-icon.png'
 import langIconEN from '@/assets/imgs/chartETA/langEn-icon.png'
+import {edbDataBtn,useAuthBtn} from '@/hooks/useAuthBtn'
+const {checkAuthBtn} = useAuthBtn()
 
 
 const cachedViewsStore=useCachedViewsStore()
 const cachedViewsStore=useCachedViewsStore()
 const router=useRouter()
 const router=useRouter()
@@ -36,6 +38,29 @@ async function langTypeChange(){
     }
     }
 }
 }
 
 
+//根据权限决定actions
+const actions = computed(()=>{
+    let actionArr = []
+    if(checkAuthBtn(edbDataBtn.edbData_addEdb)){
+        actionArr.push({
+            name:'添加指标',
+            path:'/dataEDB/addbaseEDB'
+        })
+    }
+    if(checkAuthBtn(edbDataBtn.edbData_calcuEdb)){
+        actionArr.push({
+            name:'计算指标',
+            path:'/dataEDB/calculate/index'
+        })
+    }
+    if(checkAuthBtn(edbDataBtn.edbData_replaceEdb)){
+        actionArr.push({
+                name:'替换指标',
+                path:'/dataEDB/replaceEDB'
+            })
+    }
+    return actionArr
+})
 
 
 const listState = reactive({
 const listState = reactive({
     list:[],
     list:[],
@@ -129,6 +154,23 @@ watch(
         }
         }
     }
     }
 )
 )
+//图表option check
+function checkOption(item){
+    let optionArr = []
+    if(seeComputeEDBInfo(item)&&checkAuthBtn(edbDataBtn.edbData_checkCalcChart)){
+        optionArr.push('查看')
+    }
+    if(item.Button.ShowEdbRelation&&checkAuthBtn(edbDataBtn.edbData_checkRelatedEdb)){
+        optionArr.push('关联指标')
+    }
+    if(item.Button.ShowChartRelation&&checkAuthBtn(edbDataBtn.edbData_checkRelatedChart)){
+        optionArr.push('关联图表')
+    }
+    if(item.Button.MoveButton){
+        optionArr.push('移动至')
+    }
+    return optionArr.length
+}
 function handleShowEdbOpt(item){
 function handleShowEdbOpt(item){
     edbOptState.data=item
     edbOptState.data=item
 
 
@@ -251,7 +293,7 @@ async function goSearch(){
                     style="flex:1;padding-left:0"
                     style="flex:1;padding-left:0"
                     @click-input="goSearch"
                     @click-input="goSearch"
                 />
                 />
-                <div class="lang-icon icon">
+                <div class="lang-icon icon" v-permission="edbDataBtn.edbData_switchEn">
                     <img :src="langType==='zh'?langIconZH:langIconEN" alt="" @click="langTypeChange">
                     <img :src="langType==='zh'?langIconZH:langIconEN" alt="" @click="langTypeChange">
                 </div>
                 </div>
             </div>
             </div>
@@ -288,6 +330,7 @@ async function goSearch(){
                                 height="28" 
                                 height="28" 
                                 viewBox="0 0 28 28" 
                                 viewBox="0 0 28 28" 
                                 fill="none"
                                 fill="none"
+                                v-if="checkOption(item)"
                                 @click.stop="handleShowEdbOpt(item)"
                                 @click.stop="handleShowEdbOpt(item)"
                             >
                             >
                                 <rect width="28" height="28" rx="4" :fill="item.EdbInfoId===edbOptState.data?.EdbInfoId?'#0052D9':'none'"/>
                                 <rect width="28" height="28" rx="4" :fill="item.EdbInfoId===edbOptState.data?.EdbInfoId?'#0052D9':'none'"/>
@@ -302,7 +345,7 @@ async function goSearch(){
     </div>
     </div>
 
 
     <!-- 悬浮操作按钮 -->
     <!-- 悬浮操作按钮 -->
-    <div class="fixed-opt-btn" @click="showActionPop=true">
+    <div class="fixed-opt-btn" @click="showActionPop=true" v-if="actions.length">
         <svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48" fill="none">
         <svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48" fill="none">
             <path fill-rule="evenodd" clip-rule="evenodd" d="M43.4855 12.7505L25.4062 2.31235C24.536 1.80995 23.4639 1.80995 22.5937 2.31235L4.5144 12.7505V33.6267C4.5144 34.6315 5.05046 35.5599 5.92065 36.0623L24 46.5005L42.0793 36.0623C42.9495 35.5599 43.4855 34.6315 43.4855 33.6267V12.7505ZM23.997 22.2665L9.01233 13.6153L24 4.96245L38.9859 13.6158L23.997 22.2665ZM25.5 24.8665L40.485 16.2149V33.5165L25.5 42.1666V24.8665ZM22.5 24.8665V42.1667L7.51198 33.5165V16.2132L22.5 24.8665Z" fill="white"/>
             <path fill-rule="evenodd" clip-rule="evenodd" d="M43.4855 12.7505L25.4062 2.31235C24.536 1.80995 23.4639 1.80995 22.5937 2.31235L4.5144 12.7505V33.6267C4.5144 34.6315 5.05046 35.5599 5.92065 36.0623L24 46.5005L42.0793 36.0623C42.9495 35.5599 43.4855 34.6315 43.4855 33.6267V12.7505ZM23.997 22.2665L9.01233 13.6153L24 4.96245L38.9859 13.6158L23.997 22.2665ZM25.5 24.8665L40.485 16.2149V33.5165L25.5 42.1666V24.8665ZM22.5 24.8665V42.1667L7.51198 33.5165V16.2132L22.5 24.8665Z" fill="white"/>
         </svg>
         </svg>
@@ -314,20 +357,7 @@ async function goSearch(){
         v-model:show="showActionPop"
         v-model:show="showActionPop"
         cancel-text="取消"
         cancel-text="取消"
         close-on-click-action
         close-on-click-action
-        :actions="[
-            {
-                name:'添加指标',
-                path:'/dataEDB/addbaseEDB'
-            },
-            {
-                name:'计算指标',
-                path:'/dataEDB/calculate/index'
-            },
-            {
-                name:'替换指标',
-                path:'/dataEDB/replaceEDB'
-            }
-        ]"
+        :actions="actions"
         @select="handleSelectActionOpt"
         @select="handleSelectActionOpt"
     >
     >
     </van-action-sheet>
     </van-action-sheet>
@@ -345,9 +375,9 @@ async function goSearch(){
         <template #default>
         <template #default>
             <ul class="edb-opt-list">
             <ul class="edb-opt-list">
                 <!-- 计算指标查看 -->
                 <!-- 计算指标查看 -->
-                <li class="item" v-if="seeComputeEDBInfo(edbOptState.data)" @click="handleEDBOpt('see',edbOptState.data)">查看</li>
-                <li class="item" v-if="edbOptState.data?.Button.ShowEdbRelation" @click="handleEDBOpt('relationEDB',edbOptState.data)">关联指标</li>
-                <li class="item" v-if="edbOptState.data?.Button.ShowChartRelation" @click="handleEDBOpt('relationChart',edbOptState.data)">关联图表</li>
+                <li class="item" v-if="seeComputeEDBInfo(edbOptState.data)&&checkAuthBtn(edbDataBtn.edbData_checkCalcChart)" @click="handleEDBOpt('see',edbOptState.data)">查看</li>
+                <li class="item" v-if="edbOptState.data?.Button.ShowEdbRelation&&checkAuthBtn(edbDataBtn.edbData_checkRelatedEdb)" @click="handleEDBOpt('relationEDB',edbOptState.data)">关联指标</li>
+                <li class="item" v-if="edbOptState.data?.Button.ShowChartRelation&&checkAuthBtn(edbDataBtn.edbData_checkRelatedChart)" @click="handleEDBOpt('relationChart',edbOptState.data)">关联图表</li>
                 <li class="item" v-if="edbOptState.data?.Button.MoveButton" @click="handleEDBOpt('move',edbOptState.data)">移动至</li>
                 <li class="item" v-if="edbOptState.data?.Button.MoveButton" @click="handleEDBOpt('move',edbOptState.data)">移动至</li>
             </ul>
             </ul>
         </template>
         </template>

+ 12 - 10
src/views/dataEDB/components/EDBChartDetail.vue

@@ -15,6 +15,9 @@ Boost(Highcharts)
 import { useRoute } from 'vue-router'
 import { useRoute } from 'vue-router'
 import { showToast } from 'vant'
 import { showToast } from 'vant'
 
 
+import {edbDataBtn,useAuthBtn} from '@/hooks/useAuthBtn'
+const {checkAuthBtn} = useAuthBtn()
+
 const { width } = useWindowSize()
 const { width } = useWindowSize()
 const route=useRoute()
 const route=useRoute()
 
 
@@ -466,17 +469,16 @@ onMounted(() => {
 
 
 
 
 // 图表类型
 // 图表类型
-const chartTypeOpts=[
-    {
-        name:'曲线图'
-    },
-    {
-        name:'同比图'
-    },
-    {
-        name:'季节性图'
+const chartTypeOpts = computed(()=>{
+    let optionArr=[{name:'曲线图'}]
+    if(checkAuthBtn(edbDataBtn.edbData_showChartBasis)){
+        optionArr.push({name:'同比图'})
     }
     }
-]
+    if(checkAuthBtn(edbDataBtn.edbData_switchSeason)){
+        optionArr.push({name:'季节性图'})
+    }
+    return optionArr
+})
 let beforeChartType='曲线图'
 let beforeChartType='曲线图'
 const chartType=ref('曲线图')
 const chartType=ref('曲线图')
 const showChartType=ref(false)
 const showChartType=ref(false)

+ 31 - 7
src/views/dataEDB/components/EDBClassify.vue

@@ -5,6 +5,8 @@ import apiDataEDB from '@/api/dataEDB'
 import { showDialog , showToast } from 'vant';
 import { showDialog , showToast } from 'vant';
 import {useEDBDelete} from '../hooks/useEDBDelete'
 import {useEDBDelete} from '../hooks/useEDBDelete'
 import {deleteClassifyItemEmpty} from '../util/util'
 import {deleteClassifyItemEmpty} from '../util/util'
+import {edbDataBtn,useAuthBtn} from '@/hooks/useAuthBtn'
+const {checkAuthBtn} = useAuthBtn()
 
 
 const {edbClassifyDelete}=useEDBDelete()
 const {edbClassifyDelete}=useEDBDelete()
 const { width } = useWindowSize()
 const { width } = useWindowSize()
@@ -108,7 +110,7 @@ function getClassifyItemName(item){
     return langType.value==='zh'?item.ClassifyName:item.ClassifyNameEn||item.ClassifyName
     return langType.value==='zh'?item.ClassifyName:item.ClassifyNameEn||item.ClassifyName
 }
 }
 
 
-// 获取分类数据
+// 获取分类数据classifyState
 let classifyList=ref([])
 let classifyList=ref([])
 async function getEDBClassifyList(){
 async function getEDBClassifyList(){
     const res=await apiDataEDB.edbClassifyList()
     const res=await apiDataEDB.edbClassifyList()
@@ -185,6 +187,23 @@ watch(
         }
         }
     }
     }
 )
 )
+//判断每一项的optArr并返回长度
+function checkOpt(item){
+    let optArr = []
+    if(item.Button.AddButton&&checkAuthBtn(edbDataBtn.edbData_classifyOpt_add)&&item.Level<6){
+        optArr.push({name:'添加下级目录',type:'add'})
+    }
+    if(checkAuthBtn(edbDataBtn.edbData_classifyOpt_add)){
+        optArr.push({name:'重命名',type:'edit'})
+    }
+    if(item.Button.DeleteButton&&checkAuthBtn(edbDataBtn.edbData_classifyOpt_delete)){
+        optArr.push({name:'删除',type:'delete',color:"#C54322"})
+    }
+    if(item.Level!==1&&item.Button.MoveButton&&checkAuthBtn(edbDataBtn.edbData_classifyOpt_move)){
+        optArr.push({name:'移动至',type:'move'})
+    }
+    return optArr.length
+}
 // 显示分类的具体操作选项
 // 显示分类的具体操作选项
 function handleShowClassifyOpt(item){
 function handleShowClassifyOpt(item){
     let optArr=[
     let optArr=[
@@ -192,12 +211,15 @@ function handleShowClassifyOpt(item){
         {name:'删除',type:'delete',color:"#C54322"},
         {name:'删除',type:'delete',color:"#C54322"},
     ]
     ]
     if(item.Button.AddButton&&showParentClassifyData.value.length<5){//添加权限
     if(item.Button.AddButton&&showParentClassifyData.value.length<5){//添加权限
-        optArr.unshift({name:'添加下级目录',type:'add'})
+        checkAuthBtn(edbDataBtn.edbData_classifyOpt_add)&&optArr.unshift({name:'添加下级目录',type:'add'})
+    }
+    if(!checkAuthBtn(edbDataBtn.edbData_classifyOpt_add)){//重命名
+        optArr=optArr.filter(item=>item.type!='edit')
     }
     }
-    if(!item.Button.DeleteButton){//删除
+    if(!item.Button.DeleteButton||!checkAuthBtn(edbDataBtn.edbData_classifyOpt_delete)){//删除
         optArr=optArr.filter(item=>item.type!='delete')
         optArr=optArr.filter(item=>item.type!='delete')
     }
     }
-    if(item.Button.MoveButton){//移动权限
+    if(item.Button.MoveButton&&checkAuthBtn(edbDataBtn.edbData_classifyOpt_move)){//移动权限
         // 一级目录不能移动至
         // 一级目录不能移动至
         if(selectClassifyArr.value.length){
         if(selectClassifyArr.value.length){
             optArr.push({name:'移动至',type:'move'})
             optArr.push({name:'移动至',type:'move'})
@@ -205,7 +227,7 @@ function handleShowClassifyOpt(item){
     }
     }
     classifyOptState.actions=optArr
     classifyOptState.actions=optArr
     classifyOptState.data=item
     classifyOptState.data=item
-    classifyOptState.show=true
+    optArr.length&&(classifyOptState.show=true)
 }
 }
 function handleSelectOpt(e){
 function handleSelectOpt(e){
     if(e.type==='add'){
     if(e.type==='add'){
@@ -317,10 +339,12 @@ defineExpose({classifyList,langTypeChange})
                         :style="{color:selectClassifyArr[selectClassifyArr.length-1]?.ClassifyId===item.ClassifyId?'#0052D9':''}"
                         :style="{color:selectClassifyArr[selectClassifyArr.length-1]?.ClassifyId===item.ClassifyId?'#0052D9':''}"
                         @click.stop="handleSelectClassify(item)"
                         @click.stop="handleSelectClassify(item)"
                     >{{getClassifyItemName(item)}}</span>
                     >{{getClassifyItemName(item)}}</span>
-                    <img style="width:22px;height:22px;cursor: pointer;" src="@/assets/imgs/dataEDB/icon_opt.png" alt="" @click.stop="handleShowClassifyOpt(item)">
+                    <img style="width:22px;height:22px;cursor: pointer;" src="@/assets/imgs/dataEDB/icon_opt.png" alt="" 
+                        v-if="checkOpt(item)"
+                        @click.stop="handleShowClassifyOpt(item)">
                 </li>
                 </li>
             </ul>
             </ul>
-            <div class="bot-btn-box">
+            <div class="bot-btn-box" v-permission="edbDataBtn.edbData_classifyOpt_add">
                 <van-button type="primary" block @click="handleAddLevel1">添加一级目录</van-button>
                 <van-button type="primary" block @click="handleAddLevel1">添加一级目录</van-button>
             </div>
             </div>
         </div>
         </div>