Forráskód Böngészése

指标,图表,表格引用处的权限控制

Karsa 1 éve
szülő
commit
4fafd8000b

BIN
src/assets/imgs/dataEDB/lock_big.png


BIN
src/assets/imgs/dataEDB/lock_black.png


+ 14 - 0
src/hooks/useNoAuth.js

@@ -0,0 +1,14 @@
+import noAuthImg from '@/assets/imgs/dataEDB/lock_big.png'
+import noAuthIco from '@/assets/imgs/dataEDB/lock_black.png'
+
+//无数据权限 缺省图和提示
+export function useNoAuth() {
+  
+  return {
+    noAuthImg,
+    noAuthIco,
+    edb: '暂无指标权限,如有问题请联系管理员!',
+    chart: '暂无图表权限,如有问题请联系管理员!',
+    sheet: '暂无表格权限,如有问题请联系管理员!',
+  }
+}

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

@@ -11,6 +11,7 @@ import AddChartToMyETA from './components/AddChartToMyETA.vue';
 import TreeSelectPop from './components/TreeSelectPop.vue';
 import apiChart from '@/api/chart';
 import {chartLibBtn,useAuthBtn} from '@/hooks/useAuthBtn'
+import { useNoAuth } from '@/hooks/useNoAuth'
 const {checkAuthBtn} = useAuthBtn()
 import {useCatalogList} from './hooks/useCatalogList';
 
@@ -29,6 +30,8 @@ const {
 
 //跳转至图表详情页
 const goChartDetail = (item)=>{
+    if(!item.HaveOperaAuth) return showToast(useNoAuth().chart)
+
     router.push({
         path:'/chartETA/chartdetail',
         query:{
@@ -439,7 +442,7 @@ getChartList()
                         @click="goChartDetail(item)"
                     >
                         <div class="title">{{currentLang==='EN'?(item.ChartNameEn||item.ChartName):item.ChartName}}</div>
-                        <img class="img" :src="item.ChartImage" alt="">   
+                        <img class="img" :src="!item.HaveOperaAuth?useNoAuth().noAuthImg:item.ChartImage" alt="">   
                         <div class="time">
                             <span>{{item.CreateTime.slice(0,10)}}</span>
                             <span class="tool-icon" @click.stop="showFileOpt({node:item,optArr:optArrChart})" v-if="authOptArr(item,optArrChart).length">

+ 4 - 1
src/views/chartETA/Search.vue

@@ -4,6 +4,7 @@ import apiChart from '@/api/chart'
 import { showToast } from 'vant'
 import moment from 'moment'
 import { useRouter } from 'vue-router'
+import { useNoAuth } from '@/hooks/useNoAuth'
 
 const router=useRouter()
 
@@ -53,6 +54,8 @@ function handleSearch(){
 }
 
 function goDetail(item){
+    if(!item.HaveOperaAuth) return showToast(useNoAuth().chart)
+
     router.push({
         path:'/chartETA/chartdetail',
         query:{
@@ -94,7 +97,7 @@ function goDetail(item){
             <ul class="list-wrap">
                 <li class="item" v-for="item in listState.list" :key="item.ChartInfoId" @click="goDetail(item)">
                     <div class="van-ellipsis name">{{currentLang==='EN'?(item.ChartNameEn||item.ChartName):item.ChartName}}</div>
-                    <img class="img" :src="item.ChartImage" alt="">
+                    <img class="img" :src="!item.HaveOperaAuth?useNoAuth().noAuthImg:item.ChartImage" alt="">
                     <div class="time">
                         <span>{{moment(item.CreateTime).format('YYYY-MM-DD')}}</span>
                         <span>{{item.SysUserRealName}}</span>

+ 5 - 2
src/views/dataEDB/Index.vue

@@ -8,6 +8,7 @@ import {useRouter} from 'vue-router'
 import {useCachedViewsStore} from '@/store/modules/cachedViews'
 import langIconZH from '@/assets/imgs/chartETA/lang-icon.png'
 import langIconEN from '@/assets/imgs/chartETA/langEn-icon.png'
+import { useNoAuth } from '@/hooks/useNoAuth'
 import {edbDataBtn,useAuthBtn} from '@/hooks/useAuthBtn'
 const {checkAuthBtn} = useAuthBtn()
 
@@ -270,6 +271,8 @@ async function handleConfirmEDBMove(){
 
 // 跳转详情
 function handleEDBDetail(item){
+    if(!item.HaveOperaAuth) return showToast(useNoAuth().edb)
+
     router.push({
         path:'/dataEDB/detail',
         query:{
@@ -323,7 +326,7 @@ async function goSearch(){
                         <div class="van-multi-ellipsis--l2 name">{{langType==='zh'?item.EdbName:item.EdbNameEn||item.EdbName}}</div>
                         <van-image
                             class="img"
-                            :src="item.ChartImage"
+                            :src="!item.HaveOperaAuth?useNoAuth().noAuthImg:item.ChartImage"
                         />
                         <div>
                             <span class="time">{{item.CreateTime.substring(0,10)}}</span>
@@ -334,7 +337,7 @@ async function goSearch(){
                                 height="28" 
                                 viewBox="0 0 28 28" 
                                 fill="none"
-                                v-if="checkOption(item)"
+                                v-if="checkOption(item)&&item.HaveOperaAuth"
                                 @click.stop="handleShowEdbOpt(item)"
                             >
                                 <rect width="28" height="28" rx="4" :fill="item.EdbInfoId===edbOptState.data?.EdbInfoId?'#0052D9':'none'"/>

+ 3 - 1
src/views/dataEDB/SearchList.vue

@@ -4,6 +4,7 @@ import apiDataEDB from '@/api/dataEDB'
 import { showToast } from 'vant'
 import moment from 'moment'
 import { useRouter } from 'vue-router'
+import { useNoAuth } from '@/hooks/useNoAuth'
 
 const router=useRouter()
 
@@ -51,6 +52,7 @@ function handleSearch(){
 }
 
 function goDetail(item){
+    if(!item.HaveOperaAuth) return showToast(useNoAuth().edb)
     router.push({
         path:"/dataEDB/detail",
         query:{
@@ -85,7 +87,7 @@ function goDetail(item){
                     <div class="van-multi-ellipsis--l2 name">{{item.EdbName}}</div>
                     <van-image
                         class="img"
-                        :src="item.ChartImage"
+                        :src="!item.HaveOperaAuth?useNoAuth().noAuthImg:item.ChartImage"
                     />
                     <div class="time">
                         <span>{{item.CreateTime.substring(0,10)}}</span>

+ 1 - 1
src/views/dataEDB/calculate/components/OtherCalculate.vue

@@ -450,7 +450,7 @@ function handleShowEDBHistory(data){
                     <li class="info-item">数据来源:{{selectEDBinfo.SourceName}}</li>
                 </ul>
                 <div style="text-align:right">
-                    <van-button color="#0052D9" size="small" @click="showSeeEDBDataList=true">查看数据</van-button>
+                    <van-button v-if="selectEDBinfo.HaveOperaAuth" color="#0052D9" size="small" @click="showSeeEDBDataList=true">查看数据</van-button>
                 </div>
             </div>
         </section>

+ 3 - 1
src/views/dataEDB/calculate/components/SelectEDB.vue

@@ -2,6 +2,7 @@
 import {reactive, ref, watch} from 'vue'
 import apiDataEDB from '@/api/dataEDB'
 import { showToast } from 'vant'
+import { useNoAuth } from '@/hooks/useNoAuth'
 
 const props=defineProps({
     show:{
@@ -143,8 +144,9 @@ function handleShowEDBInfo(item){
                     <van-radio-group v-model="checked">
                         <ul class="list-box">
                             <li class="item" v-for="item in listState.list" :key="item.EdbInfoId">
-                                <van-radio :name="item.EdbInfoId">
+                                <van-radio :name="item.EdbInfoId" :disabled="!item.HaveOperaAuth">
                                     <div class="con">
+                                        <img :src="useNoAuth().noAuthIco" width="18" height="18">
                                         <div class="name">{{item.EdbName}}</div>
                                         <svg-icon @click.stop="handleShowEDBInfo(item)" class="icon" name="error-circle-filled" size="16px" color="#999"/>
                                     </div>

+ 4 - 1
src/views/myETA/Index.vue

@@ -8,6 +8,7 @@ import { useWindowSize } from '@vueuse/core'
 import draggable from 'vuedraggable'
 import {useCachedViewsStore} from '@/store/modules/cachedViews'
 import {myETABtn,useAuthBtn} from '@/hooks/useAuthBtn'
+import { useNoAuth } from '@/hooks/useNoAuth'
 const {checkAuthBtn} = useAuthBtn()
 
 const cachedViewsStore=useCachedViewsStore()
@@ -172,6 +173,8 @@ let activeMenu = ref([])
 
 // 跳转详情
 function goDetail(item){
+    if(!item.HaveOperaAuth) return showToast(useNoAuth().chart)
+    
     router.push({
         path:"/myETA/chartdetail",
         query:{
@@ -223,7 +226,7 @@ async function goSearch(){
                     @click="goDetail(item)"
                 >
                     <div class="van-multi-ellipsis--l2 name">{{item.ChartName}}</div>
-                    <img class="img" :src="item.ChartImage" alt="">   
+                    <img class="img" :src="!item.HaveOperaAuth?useNoAuth().noAuthImg:item.ChartImage" alt="">   
                     <div class="time">
                         <span>{{item.CreateTime.slice(0,10)}}</span>
                         <img v-if="listState.ctype==='我的图库'&&checkAuthBtn(myETABtn.myChart_move)" class="remove-box" @click.stop="handleRemoveChart(item,index)" src="@/assets/imgs/myETA/icon_remove2.png" alt="">

+ 3 - 1
src/views/myETA/SearchList.vue

@@ -4,6 +4,7 @@ import {apiMyETAChartSearch} from '@/api/myETA'
 import { showToast } from 'vant'
 import moment from 'moment'
 import { useRouter } from 'vue-router'
+import { useNoAuth } from '@/hooks/useNoAuth'
 
 const router=useRouter()
 
@@ -50,6 +51,7 @@ function handleSearch(){
 }
 
 function goDetail(item){
+    if(!item.HaveOperaAuth) return showToast(useNoAuth().chart)
     router.push({
         path:"/myETA/chartdetail",
         query:{
@@ -82,7 +84,7 @@ function goDetail(item){
             <ul class="list-wrap">
                 <li class="item" v-for="item in listState.list" :key="item.ChartInfoId" @click="goDetail(item)">
                     <div class="van-multi-ellipsis--l2 name">{{item.ChartName}}</div>
-                    <img class="img" :src="item.ChartImage" alt="">   
+                    <img class="img" :src="!item.HaveOperaAuth?useNoAuth().noAuthImg:item.ChartImage" alt="">   
                     <div class="time">
                         <span>{{item.CreateTime.slice(0,10)}}</span>
                     </div>

+ 4 - 1
src/views/report/components/reportInsert/ETAChart.vue

@@ -8,6 +8,7 @@ import apiStatisticFeatureChart from '@/api/statisticFeatureChart'
 import apiCrossVarietyChart from '@/api/crossVarietyChart'
 import { showToast } from 'vant'
 import { vInfiniteScroll } from '@vueuse/components'
+import { useNoAuth } from '@/hooks/useNoAuth'
 
 const emits=defineEmits(['update'])
 
@@ -73,6 +74,8 @@ function handleSelect(item){
         showToast('内部图表,不允许插入报告')
         return
     }
+    if(!item.HaveOperaAuth) return showToast(useNoAuth().chart)
+    
     const index=selectChartList.value.indexOf(item.UniqueCode)
     if(index!==-1){
         selectChartList.value.splice(index,1)
@@ -122,7 +125,7 @@ watch(
                     @click="handleSelect(item)"
                 >
                     <div class="van-multi-ellipsis--l2 title">{{item.ChartName}}</div>
-                    <img :src="item.ChartImage" alt="">
+                    <img :src="!item.HaveOperaAuth?useNoAuth().noAuthImg:item.ChartImage" alt="">
 
                     <svg v-if="selectChartList.includes(item.UniqueCode)" width="29" height="28" viewBox="0 0 29 28" fill="none" xmlns="http://www.w3.org/2000/svg">
                         <path d="M14.5 28C22.232 28 28.5 21.732 28.5 14C28.5 6.26801 22.232 0 14.5 0C6.76801 0 0.5 6.26801 0.5 14C0.5 21.732 6.76801 28 14.5 28ZM7.5 14.413L8.913 13L12.5 16.586L20.085 9L21.5 10.415L12.5 19.414L7.5 14.413Z" fill="#0052D9"/>

+ 3 - 1
src/views/report/components/reportInsert/Index.vue

@@ -19,7 +19,9 @@ function handleSelectChart(data){
 
 function handleConfirmInsert(){
     if(['图表插入','批量插入'].includes(activeType.value)){
-        emits('insert',{list:list.value,type:'iframe',chartType:'chart'})
+        let filterList = activeType.value === '批量插入' ? list.value.filter(_ => _.HaveOperaAuth) : list.value;
+
+        emits('insert',{list: filterList,type:'iframe',chartType:'chart'})
     }else if(activeType.value==='表格插入'){
         emits('insert',{list:list.value,type:'iframe',chartType:'sheet'})
     }else if(['沙盘插入','语义分析插入'].includes(activeType.value)){

+ 4 - 3
src/views/report/components/reportInsert/MyETAChart.vue

@@ -2,6 +2,7 @@
 import {reactive,ref,watch} from 'vue'
 import apiMyETAChart from '@/api/myETA'
 import { vInfiniteScroll } from '@vueuse/components'
+import { useNoAuth } from '@/hooks/useNoAuth'
 
 const emits=defineEmits(['update'])
 
@@ -84,13 +85,13 @@ watch(
             
             <ul class="chart-list" v-infinite-scroll="[onLoadMore, { 'distance' : 10 }]">
                 <li 
-                    class="chart-item active" 
+                    :class="['chart-item',{'active':item.HaveOperaAuth}]" 
                     v-for="item in listState.list" 
                     :key="item.ChartInfoId"
                 >
                     <div class="van-multi-ellipsis--l2 title">{{item.ChartName}}</div>
-                    <img :src="item.ChartImage" alt="">
-                    <svg width="29" height="28" viewBox="0 0 29 28" fill="none" xmlns="http://www.w3.org/2000/svg">
+                    <img :src="!item.HaveOperaAuth?useNoAuth().noAuthImg:item.ChartImage" alt="">
+                    <svg width="29" height="28" viewBox="0 0 29 28" fill="none" xmlns="http://www.w3.org/2000/svg" v-if="item.HaveOperaAuth">
                         <path d="M14.5 28C22.232 28 28.5 21.732 28.5 14C28.5 6.26801 22.232 0 14.5 0C6.76801 0 0.5 6.26801 0.5 14C0.5 21.732 6.76801 28 14.5 28ZM7.5 14.413L8.913 13L12.5 16.586L20.085 9L21.5 10.415L12.5 19.414L7.5 14.413Z" fill="#0052D9"/>
                     </svg>
                 </li>

+ 5 - 1
src/views/report/components/reportInsert/SheetTableChart.vue

@@ -2,6 +2,8 @@
 import {reactive, ref,watch} from 'vue'
 import apiSheetChart from '@/api/sheet'
 import { vInfiniteScroll } from '@vueuse/components'
+import { showToast } from 'vant'
+import { useNoAuth } from '@/hooks/useNoAuth'
 
 const emits=defineEmits(['update'])
 
@@ -44,6 +46,8 @@ function handleRefreshList(){
 
 const selectChartList=ref([])
 function handleSelect(item){
+    if(!item.HaveOperaAuth) return showToast(useNoAuth().sheet)
+
     const index=selectChartList.value.indexOf(item.UniqueCode)
     if(index!==-1){
         selectChartList.value.splice(index,1)
@@ -81,7 +85,7 @@ watch(
                     @click="handleSelect(item)"
                 >
                     <div class="van-multi-ellipsis--l2 title">{{item.ExcelName}}</div>
-                    <img :src="item.ExcelImage" alt="">
+                    <img :src="!item.HaveOperaAuth?useNoAuth().noAuthImg:item.ExcelImage" alt="">
 
                     <svg v-if="selectChartList.includes(item.UniqueCode)" width="29" height="28" viewBox="0 0 29 28" fill="none" xmlns="http://www.w3.org/2000/svg">
                         <path d="M14.5 28C22.232 28 28.5 21.732 28.5 14C28.5 6.26801 22.232 0 14.5 0C6.76801 0 0.5 6.26801 0.5 14C0.5 21.732 6.76801 28 14.5 28ZM7.5 14.413L8.913 13L12.5 16.586L20.085 9L21.5 10.415L12.5 19.414L7.5 14.413Z" fill="#0052D9"/>