瀏覽代碼

Merge branch 'eta1.7.6'

Karsa 1 年之前
父節點
當前提交
12bad36bc1

二進制
src/assets/imgs/dataEDB/lock_big.png


二進制
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: '暂无表格权限,如有问题请联系管理员!',
+  }
+}

+ 5 - 2
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,10 +442,10 @@ 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">
+                            <span class="tool-icon" @click.stop="showFileOpt({node:item,optArr:optArrChart})" v-if="authOptArr(item,optArrChart).length&&item.HaveOperaAuth">
                                 <img class="icon" src="@/assets/imgs/ppt/ppt_icon_menu.png" alt="">
                             </span>
                         </div>

+ 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>

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

@@ -32,7 +32,7 @@ function showPopup(){
     <div class="catalog-item" :class="{'leaf-padding':!showFileImg}">
         <span class="van-ellipsis" :class="{'leaf-padding':!showFileImg,'choosed':activeId===node.ChartClassifyId}">{{node.ChartClassifyName||''}}</span>
         <div @click.stop="showPopup" v-if="authOptArr(node,optArr).length">
-            <div class="menu-icon">
+            <div class="menu-icon"  v-if="node.HaveOperaAuth">
                 <img class="icon" src="@/assets/imgs/ppt/ppt_icon_menu.png" alt="">
             </div>
         </div>

+ 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" v-if="!item.HaveOperaAuth">
                                         <div class="name">{{item.EdbName}}</div>
                                         <svg-icon @click.stop="handleShowEDBInfo(item)" class="icon" name="error-circle-filled" size="16px" color="#999"/>
                                     </div>

+ 1 - 1
src/views/dataEDB/components/EDBClassify.vue

@@ -346,7 +346,7 @@ defineExpose({classifyList,langTypeChange})
                         @click.stop="handleSelectClassify(item)"
                     >{{getClassifyItemName(item)}}</span>
                     <img style="width:22px;height:22px;cursor: pointer;" src="@/assets/imgs/dataEDB/icon_opt.png" alt="" 
-                        v-if="checkOpt(item)"
+                        v-if="checkOpt(item)&&item.HaveOperaAuth"
                         @click.stop="handleShowClassifyOpt(item)">
                 </li>
             </ul>

+ 140 - 120
src/views/myETA/ChartDetail.vue

@@ -25,6 +25,7 @@ import AddChartToMyETA from '@/views/chartETA/components/AddChartToMyETA.vue'
 import { setExtremumDate } from '@/hooks/chart/commonFun.js'
 import {myETABtn,useAuthBtn} from '@/hooks/useAuthBtn'
 import {usePublicSettingStore} from '@/store/modules/publicSetting'
+import { useNoAuth } from '@/hooks/useNoAuth'
 const {checkAuthBtn} = useAuthBtn()
 
 
@@ -99,6 +100,9 @@ async function getChartInfo(){
     chartInfoData=res.Data
 
     chartInfo.value=res.Data.ChartInfo
+
+    if(!res.Data.ChartInfo.HaveOperaAuth) return
+
     if([2,5].includes(res.Data.ChartInfo.Source)){
         edbList.value=[res.Data.EdbInfoList[0]]
     }else{
@@ -747,143 +751,152 @@ const isShowAddToMyETADialog=ref(false)
 
 <template>
     <div class="chart-detail-page" v-if="chartInfo">
-        <div 
-            class="chart-title"
-            :style="chartInfo.ChartThemeStyle?`
-                text-align:${JSON.parse(chartInfo.ChartThemeStyle).titleOptions.align};
-                font-size:${JSON.parse(chartInfo.ChartThemeStyle).titleOptions.style.fontSize}px;
-                color:${JSON.parse(chartInfo.ChartThemeStyle).titleOptions.style.color}
-            `:''"
-        >
-            {{chartInfo.ChartName}}
-        </div>
-        <!-- 一般曲线图选择时间区间或者季节图选择日期 -->
-        <div 
-            class="select-time-box" 
-            v-if="(sameOptionType.includes(chartInfo.ChartType)&& chartInfo.Source===1)||chartInfo.ChartType===2" 
-            @click="openDateSelect"
-        >
-            <img class="left-icon" src="@/assets/imgs/icon_calendar.png" alt="">
-            <span :class="['val-box',!chartState.startTime?'val-box_grey':'']">{{chartState.startTime||'开始日期'}} ~ {{chartState.startTime&&!chartState.endTime?'至今':chartState.endTime||'结束日期'}}</span>
-            <van-icon class="right-icon" name="arrow" />
-        </div>
+        <template v-if="chartInfo.HaveOperaAuth">
+            
+            <div 
+                class="chart-title"
+                :style="chartInfo.ChartThemeStyle?`
+                    text-align:${JSON.parse(chartInfo.ChartThemeStyle).titleOptions.align};
+                    font-size:${JSON.parse(chartInfo.ChartThemeStyle).titleOptions.style.fontSize}px;
+                    color:${JSON.parse(chartInfo.ChartThemeStyle).titleOptions.style.color}
+                `:''"
+            >
+                {{chartInfo.ChartName}}
+            </div>
+            <!-- 一般曲线图选择时间区间或者季节图选择日期 -->
+            <div 
+                class="select-time-box" 
+                v-if="(sameOptionType.includes(chartInfo.ChartType)&& chartInfo.Source===1)||chartInfo.ChartType===2" 
+                @click="openDateSelect"
+            >
+                <img class="left-icon" src="@/assets/imgs/icon_calendar.png" alt="">
+                <span :class="['val-box',!chartState.startTime?'val-box_grey':'']">{{chartState.startTime||'开始日期'}} ~ {{chartState.startTime&&!chartState.endTime?'至今':chartState.endTime||'结束日期'}}</span>
+                <van-icon class="right-icon" name="arrow" />
+            </div>
 
-        <!-- pad端时间和操作按钮模块 -->
-        <div class="pad-time-action-wrap">
-            <div class="left-time-box" >
-                <template v-if="sameOptionType.includes(chartInfo.ChartType)&& chartInfo.Source===1">
-                    <span :class="['item',chartState.yearVal==''?'active':'']" @click="handleYearChange({value:''})">全部</span>
+            <!-- pad端时间和操作按钮模块 -->
+            <div class="pad-time-action-wrap">
+                <div class="left-time-box" >
+                    <template v-if="sameOptionType.includes(chartInfo.ChartType)&& chartInfo.Source===1">
+                        <span :class="['item',chartState.yearVal==''?'active':'']" @click="handleYearChange({value:''})">全部</span>
+                        <span 
+                            :class="['item',chartState.yearVal==item.value?'active':'']"
+                            v-for="item in yearSelectOpt" 
+                            :key="item.value"
+                            @click="handleYearChange(item)"
+                        >{{item.name}}</span>
+                    </template>
                     <span 
-                        :class="['item',chartState.yearVal==item.value?'active':'']"
-                        v-for="item in yearSelectOpt" 
-                        :key="item.value"
-                        @click="handleYearChange(item)"
-                    >{{item.name}}</span>
-                </template>
-                <span 
-                    class="time-box"
-                    v-if="(sameOptionType.includes(chartInfo.ChartType)&& chartInfo.Source===1)||chartInfo.ChartType===2"
-                    @click="openDateSelect"
-                >{{chartState.startTime?chartState.startTime+'~'+(chartState.endTime?chartState.endTime:'至今'):'请选择时间段'}}</span>
-            </div>
-            <div class="right-action-box">
-                <div class="item" @click="handleShowAxisLimitOpt" v-if="[1,2,5,10].includes(chartInfo.Source)&&checkAuthBtn(myETABtn.myChart_editLimit)">
-                    <img src="@/assets/imgs/myETA/icon_limit2.png" alt="">
-                    <span>上下限设置</span>
+                        class="time-box"
+                        v-if="(sameOptionType.includes(chartInfo.ChartType)&& chartInfo.Source===1)||chartInfo.ChartType===2"
+                        @click="openDateSelect"
+                    >{{chartState.startTime?chartState.startTime+'~'+(chartState.endTime?chartState.endTime:'至今'):'请选择时间段'}}</span>
                 </div>
-                <div class="item" @click="showMoreAction=true" v-if="isMoreActionShow||$route.query.from==='edbRelationChart'">
-                    <img src="@/assets/imgs/chartETA/more-icon.png" alt="">
-                    <span>更多设置</span>
+                <div class="right-action-box">
+                    <div class="item" @click="handleShowAxisLimitOpt" v-if="[1,2,5,10].includes(chartInfo.Source)&&checkAuthBtn(myETABtn.myChart_editLimit)">
+                        <img src="@/assets/imgs/myETA/icon_limit2.png" alt="">
+                        <span>上下限设置</span>
+                    </div>
+                    <div class="item" @click="showMoreAction=true" v-if="isMoreActionShow||$route.query.from==='edbRelationChart'">
+                        <img src="@/assets/imgs/chartETA/more-icon.png" alt="">
+                        <span>更多设置</span>
+                    </div>
                 </div>
             </div>
-        </div>
 
-        <!-- 图渲染区域 -->
-        <div class="chart-render-wrap">
-            <!-- pad 切换上一张\下一张 -->
-            <img class="pad-change-chart-btn" src="@/assets/imgs/icon_arrow2.png" alt="" @click="handleSwitchChart('prev')" v-if="allChartList.length>0">
-            <img class="pad-change-chart-btn pad-change-chart-next-btn" src="@/assets/imgs/icon_arrow2.png" alt="" @click="handleSwitchChart('next')" v-if="allChartList.length>0">
-            <div class="chart-box" id="chart-box"></div>
-
-            <!-- 底部来源,图表说明 -->
-            <div class="chart-bottom-insruction-info" 
-            v-if="(chartInfo.SourcesFrom&&JSON.parse(chartInfo.SourcesFrom).isShow) || (chartInfo.Instructions&&JSON.parse(chartInfo.Instructions).isShow)">
-
-                <div 
-                    class="chart-source" 
-                    v-if="chartInfo.SourcesFrom&&JSON.parse(chartInfo.SourcesFrom).isShow"
+            <!-- 图渲染区域 -->
+            <div class="chart-render-wrap">
+                <!-- pad 切换上一张\下一张 -->
+                <img class="pad-change-chart-btn" src="@/assets/imgs/icon_arrow2.png" alt="" @click="handleSwitchChart('prev')" v-if="allChartList.length>0">
+                <img class="pad-change-chart-btn pad-change-chart-next-btn" src="@/assets/imgs/icon_arrow2.png" alt="" @click="handleSwitchChart('next')" v-if="allChartList.length>0">
+                <div class="chart-box" id="chart-box"></div>
+
+                <!-- 底部来源,图表说明 -->
+                <div class="chart-bottom-insruction-info" 
+                v-if="(chartInfo.SourcesFrom&&JSON.parse(chartInfo.SourcesFrom).isShow) || (chartInfo.Instructions&&JSON.parse(chartInfo.Instructions).isShow)">
+
+                    <div 
+                        class="chart-source" 
+                        v-if="chartInfo.SourcesFrom&&JSON.parse(chartInfo.SourcesFrom).isShow"
+                        :style="`
+                            color: ${ JSON.parse(chartInfo.SourcesFrom).color };
+                            font-size: ${ JSON.parse(chartInfo.SourcesFrom).fontSize }px;
+                        `"
+                    >
+                        数据来源:{{JSON.parse(chartInfo.SourcesFrom).text}}
+                    </div>
+                    <!-- 图表说明 -->
+                    <div 
+                    class="chart-instruction text_oneLine"
+                    v-if="chartInfo.Instructions&&JSON.parse(chartInfo.Instructions).isShow"
+                    v-text="JSON.parse(chartInfo.Instructions).text"
                     :style="`
-                        color: ${ JSON.parse(chartInfo.SourcesFrom).color };
-                        font-size: ${ JSON.parse(chartInfo.SourcesFrom).fontSize }px;
+                        color: ${JSON.parse(chartInfo.Instructions).color};
+                        font-size: ${ JSON.parse(chartInfo.Instructions).fontSize }px
                     `"
-                >
-                    数据来源:{{JSON.parse(chartInfo.SourcesFrom).text}}
+                    ></div>
                 </div>
-                <!-- 图表说明 -->
-                <div 
-                class="chart-instruction text_oneLine"
-                v-if="chartInfo.Instructions&&JSON.parse(chartInfo.Instructions).isShow"
-                v-text="JSON.parse(chartInfo.Instructions).text"
-                :style="`
-                    color: ${JSON.parse(chartInfo.Instructions).color};
-                    font-size: ${ JSON.parse(chartInfo.Instructions).fontSize }px
-                `"
-                ></div>
             </div>
-        </div>
 
-        <!-- 一般曲线图选择时间区间 -->
-        <div class="select-year-box" v-if="sameOptionType.includes(chartInfo.ChartType)&& chartInfo.Source===1">
-            <span :class="['item',chartState.yearVal==''?'active':'']" @click="handleYearChange({value:''})">全部</span>
-            <span 
-                :class="['item',chartState.yearVal==item.value?'active':'']"
-                v-for="item in yearSelectOpt" 
-                :key="item.value"
-                @click="handleYearChange(item)"
-            >{{item.name}}</span>
-        </div>
-        <!-- 季节图切换公/农历 -->
-        <div class="calendar-type-box" v-if="chartInfo.ChartType === 2">
-            <span 
-                :class="chartState.calendarType=='公历'?'active':''"
-                @click="handleSeasonTypeChange('公历')"
-            >公历</span>
-            <span 
-                :class="chartState.calendarType=='农历'?'active':''"
-                @click="handleSeasonTypeChange('农历')"
-            >农历</span>
-        </div>
+            <!-- 一般曲线图选择时间区间 -->
+            <div class="select-year-box" v-if="sameOptionType.includes(chartInfo.ChartType)&& chartInfo.Source===1">
+                <span :class="['item',chartState.yearVal==''?'active':'']" @click="handleYearChange({value:''})">全部</span>
+                <span 
+                    :class="['item',chartState.yearVal==item.value?'active':'']"
+                    v-for="item in yearSelectOpt" 
+                    :key="item.value"
+                    @click="handleYearChange(item)"
+                >{{item.name}}</span>
+            </div>
+            <!-- 季节图切换公/农历 -->
+            <div class="calendar-type-box" v-if="chartInfo.ChartType === 2">
+                <span 
+                    :class="chartState.calendarType=='公历'?'active':''"
+                    @click="handleSeasonTypeChange('公历')"
+                >公历</span>
+                <span 
+                    :class="chartState.calendarType=='农历'?'active':''"
+                    @click="handleSeasonTypeChange('农历')"
+                >农历</span>
+            </div>
 
-        <!-- 指标模块 -->
-        <div class="edb-list-box">
-           <div class="list-box">
-                <div class="list-item" v-for="item in edbList" :key="item.EdbInfoId" @click="handleShowEDBInfo(item)">
-                    <span class="date">{{item.LatestDate}}</span>
-                    <span class="edb-name van-ellipsis" :style="{color:item.ChartColor}">{{item.EdbName}}</span>
-                    <span class="value">{{item.LatestValue}}</span>
+            <!-- 指标模块 -->
+            <div class="edb-list-box">
+            <div class="list-box">
+                    <div class="list-item" v-for="item in edbList" :key="item.EdbInfoId" @click="handleShowEDBInfo(item)">
+                        <span class="date">{{item.LatestDate}}</span>
+                        <span class="edb-name van-ellipsis" :style="{color:item.ChartColor}">{{item.EdbName}}</span>
+                        <span class="value">{{item.LatestValue}}</span>
+                    </div>
                 </div>
             </div>
-        </div>
 
-        <!-- 底部悬浮操作模块 -->
-        <div class="fix-bot-action-box">
-            <div class="item" @click="handleSwitchChart('prev')" v-if="allChartList.length>0">
-                <img class="icon" src="@/assets/imgs/icon_arrow.png" alt="">
-                <div>上一张</div>
-            </div>
-            <div class="item" @click="handleSwitchChart('next')" v-if="allChartList.length>0">
-                <img class="icon" style="transform: rotate(180deg);" src="@/assets/imgs/icon_arrow.png" alt="">
-                <div>下一张</div>
-            </div>
-            <div class="item" @click="handleShowAxisLimitOpt" v-if="[1,2,5,10].includes(chartInfo.Source)&&checkAuthBtn(myETABtn.myChart_editLimit)">
-                <img class="icon" src="@/assets/imgs/myETA/icon_limit.png" alt="">
-                <div>上下限</div>
-            </div>
-            <div class="item" @click="showMoreAction=true" v-if="isMoreActionShow||$route.query.from==='edbRelationChart'">
-                <img class="icon" src="@/assets/imgs/myETA/icon_menu.png" alt="">
-                <div>更多</div>
+            <!-- 底部悬浮操作模块 -->
+            <div class="fix-bot-action-box">
+                <div class="item" @click="handleSwitchChart('prev')" v-if="allChartList.length>0">
+                    <img class="icon" src="@/assets/imgs/icon_arrow.png" alt="">
+                    <div>上一张</div>
+                </div>
+                <div class="item" @click="handleSwitchChart('next')" v-if="allChartList.length>0">
+                    <img class="icon" style="transform: rotate(180deg);" src="@/assets/imgs/icon_arrow.png" alt="">
+                    <div>下一张</div>
+                </div>
+                <div class="item" @click="handleShowAxisLimitOpt" v-if="[1,2,5,10].includes(chartInfo.Source)&&checkAuthBtn(myETABtn.myChart_editLimit)">
+                    <img class="icon" src="@/assets/imgs/myETA/icon_limit.png" alt="">
+                    <div>上下限</div>
+                </div>
+                <div class="item" @click="showMoreAction=true" v-if="isMoreActionShow||$route.query.from==='edbRelationChart'">
+                    <img class="icon" src="@/assets/imgs/myETA/icon_menu.png" alt="">
+                    <div>更多</div>
+                </div>
             </div>
+        </template>
+
+        <div class="noAuth" v-if="chartInfo.HaveOperaAuth===false">
+            <img class="img" :src="useNoAuth().noAuthImg" alt="">
+            <div>{{useNoAuth().chart}}</div>
         </div>
+        
     </div>
 
     <!-- 选择日期弹窗 -->
@@ -1583,5 +1596,12 @@ const isShowAddToMyETADialog=ref(false)
     .chart-picture-box{
         width: 500PX;
     }
+
+}
+.noAuth {
+    text-align: center;
+    .img {
+        margin-bottom: 20px;
+    }
 }
 </style>

+ 9 - 6
src/views/myETA/ChooseChart.vue

@@ -8,6 +8,7 @@ import apiStatisticFeatureChart from '@/api/statisticFeatureChart'
 import {apiMyClassifyList,apiMyChartAdd,apiAddClassify} from '@/api/myETA'
 import { showToast } from 'vant';
 import { useWindowSize } from '@vueuse/core'
+import { useNoAuth } from '@/hooks/useNoAuth'
 const { width, height } = useWindowSize()
 
 const keyword=ref('')
@@ -226,15 +227,17 @@ async function handleConfirmEditClassify(){
                     fit="contain"
                     lazy-load
                     class="img"
-                    :src="item.ChartImage"
+                    :src="!item.HaveOperaAuth?useNoAuth().noAuthImg:item.ChartImage"
                 />
                 <div>
                     <span class="time">{{item.ModifyTime.substr(0,10)}}</span>
-                    <img class="add-icon" src="@/assets/imgs/myETA/icon_add.png" alt="" @click="handleAdd(item)">
-                    <div class="pad-add-box" @click="handleAdd(item)">
-                        <img src="@/assets/imgs/myETA/icon_add.png" alt="">
-                        <span>加入我的图库</span>
-                    </div>
+                    <template v-if="item.HaveOperaAuth">
+                        <img class="add-icon" src="@/assets/imgs/myETA/icon_add.png" alt="" @click="handleAdd(item)">
+                        <div class="pad-add-box" @click="handleAdd(item)">
+                            <img src="@/assets/imgs/myETA/icon_add.png" alt="">
+                            <span>加入我的图库</span>
+                        </div>
+                    </template>
                 </div>
             </li>
         </ul>

+ 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>

+ 1 - 1
src/views/myETA/components/EDBInfo.vue

@@ -151,7 +151,7 @@ function handleCopyEDBData(){
                     <van-icon name="arrow" v-if="item.key==='SourceName'&&data.EdbType===2" @click="showSourceDetail=true" />
                 </li>
             </ul>
-            <div class="opt-box">
+            <div class="opt-box" v-if="data.HaveOperaAuth">
                 <div class="lable">指标操作</div>
                 <div class="con">
                     <!--<template v-if="sameOptionType.includes(chartInfo.ChartType) && chartInfo.ChartType!==5 && chartInfo.Source===1">

+ 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"/>