Преглед изворни кода

Merge branch 'ch/need_pool368'

shanbinzhang пре 4 дана
родитељ
комит
590ddaddc6

+ 84 - 27
src/views/report/components/reportInsert/ETAChart.vue

@@ -2,7 +2,12 @@
 import {reactive, ref, watch} from 'vue'
 import apiChart from '@/api/chart'
 import apiFutureChart from '@/api/futureChart'
+import MyETAChart from './MyETAChart.vue'
+import ETAForumChart from './ETAForumChart.vue'
+import StatisticAnalysis from './StatisticAnalysis.vue'
+import PriceChart from './PriceChart.vue'
 import { showToast } from 'vant'
+import {apiMenuList} from '@/api/user'
 import { vInfiniteScroll } from '@vueuse/components'
 import { useNoAuth } from '@/hooks/useNoAuth'
 
@@ -10,6 +15,9 @@ const emits=defineEmits(['update'])
 
 const searchVal=ref('')
 const onlyMe=ref(false)
+const activeType=ref('')
+const typeOpts=ref([])
+const isStatisticalAnalysis=ref(false) // 是否显示统计分析
 
 const listState=reactive({
     page:1,
@@ -81,39 +89,88 @@ watch(
     }
 )
 
+function handleSelectChart(val){
+    emits('update',val)
+}
+
+
+async function initTypeOpts(){
+    const res=await apiMenuList()
+    if(res.Ret===200){
+        const menuData=res.Data.List||[]
+        let pathArr=[]
+        menuData.forEach(item=>{
+			if(item.children){
+				item.children.forEach(_item=>{
+					pathArr.push(_item.path)
+				})
+			}else{
+				pathArr.push(item.path)
+			}
+		})
+        typeOpts.value = pathArr
+        const chartPathArr=[
+            'chartrelevance',
+            'fittingEquationList',
+            'statisticFeatureList',
+            'crossVarietyChartList',
+            'rangeAnalysis'
+        ]
+        if(chartPathArr.some(item=>pathArr.includes(item))){
+            isStatisticalAnalysis.value=true
+        }
+    }
+}
+initTypeOpts()
 </script>
 
 <template>
     <div class="ETA-chart-wrap">
-        <div class="sticky-box">
-            <van-search v-model="searchVal" shape="round" placeholder="请输入图表名称" @search="handleRefreshList" @clear="handleRefreshList" />
-            <van-checkbox v-model="onlyMe" @change="handleRefreshList">只看我的</van-checkbox>
-        </div>
-        <div class="content-box">
-            <div v-if="listState.list.length==0&&listState.finished">
-                <img class="list-empty-img" src="https://hzstatic.hzinsights.com/static/ETA_mobile/empty_img.png" alt="">
-                <p style="text-align:center;color:#999999;font-size:12px">暂无图表</p>
-            </div>
-            
-            <ul class="chart-list" v-infinite-scroll="[onLoadMore, { 'distance' : 10 }]">
-                <li 
-                    :class="['chart-item',selectChartList.includes(item.UniqueCode)&&'active']" 
-                    v-for="item in listState.list" 
-                    :key="item.ChartInfoId"
-                    @click="handleSelect(item)"
-                >
-                    <div class="van-multi-ellipsis--l2 title" v-html="item.SearchText"></div>
-                    <img :src="!item.HaveOperaAuth?useNoAuth().noAuthImg:item.ChartImage" alt="">
+        <van-tabs v-model:active="activeType">
+            <van-tab title="图库" v-if="typeOpts.includes('chartsetting')">
+                <div class="sticky-box">
+                    <van-search v-model="searchVal" shape="round" placeholder="请输入图表名称" @search="handleRefreshList" @clear="handleRefreshList" />
+                    <van-checkbox v-model="onlyMe" @change="handleRefreshList">只看我的</van-checkbox>
+                </div>
+                <div class="content-box">
+                    <div v-if="listState.list.length==0&&listState.finished">
+                        <img class="list-empty-img" src="https://hzstatic.hzinsights.com/static/ETA_mobile/empty_img.png" alt="">
+                        <p style="text-align:center;color:#999999;font-size:12px">暂无图表</p>
+                    </div>
+                    
+                    <ul class="chart-list" v-infinite-scroll="[onLoadMore, { 'distance' : 10 }]">
+                        <li 
+                            :class="['chart-item',selectChartList.includes(item.UniqueCode)&&'active']" 
+                            v-for="item in listState.list" 
+                            :key="item.ChartInfoId"
+                            @click="handleSelect(item)"
+                        >
+                            <div class="van-multi-ellipsis--l2 title" v-html="item.SearchText"></div>
+                            <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"/>
-                    </svg>
+                            <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"/>
+                            </svg>
 
-                </li>
-                <li class="chart-item" style="height:0;border:none;margin-bottom:0;padding:0"></li>
-                <li class="chart-item" style="height:0;border:none;margin-bottom:0;padding:0"></li>
-            </ul>
-        </div>
+                        </li>
+                        <li class="chart-item" style="height:0;border:none;margin-bottom:0;padding:0"></li>
+                        <li class="chart-item" style="height:0;border:none;margin-bottom:0;padding:0"></li>
+                    </ul>
+                </div>
+            </van-tab>
+            <van-tab title="我的图库"  v-if="typeOpts.includes('mychart')">
+                <MyETAChart @update="handleSelectChart"/>
+            </van-tab>
+            <van-tab title="ETA社区图库" v-if="typeOpts.includes('etaForum')">
+                <ETAForumChart @update="handleSelectChart"/>
+            </van-tab>
+            <van-tab title="统计分析" v-if="isStatisticalAnalysis">
+                <StatisticAnalysis @update="handleSelectChart"/>
+            </van-tab>
+            <van-tab title="商品价格曲线" v-if="typeOpts.includes('commordityChartBase')">
+                <PriceChart @update="handleSelectChart"/>
+            </van-tab>
+        </van-tabs>
     </div>
 </template>
 

+ 22 - 16
src/views/report/components/reportInsert/Index.vue

@@ -2,13 +2,10 @@
 import {ref} from 'vue'
 import {apiMenuList} from '@/api/user'
 import ETAChart from './ETAChart.vue'
-import MyETAChart from './MyETAChart.vue'
 import SandTableImg from './SandTableImg.vue'
 import SheetTableChart from './SheetTableChart.vue'
 import SemanticsImg from './SemanticsImg.vue'
 import MaterialImg from './reportMaterial/Index.vue'
-import StatisticAnalysis from './StatisticAnalysis.vue'
-import PriceChart from './PriceChart.vue'
 import BalanceSheet from './BalanceSheet/Index.vue'
 import ETAForumChart from './ETAForumChart.vue'
 import AIForecastingModel from './AIForecastingModel.vue'
@@ -27,16 +24,6 @@ const typeOpt=ref([
         label:'图库',
         path:''
     },
-    {
-        value:'批量插入',
-        label:'我的图库',
-        path:'mychart'
-    },
-    {
-        value:'etaForum',
-        label:'ETA社区图库',
-        path:'mychart'
-    },
     {
         value:'表格插入',
         label:'表格',
@@ -90,6 +77,28 @@ async function initTypeOpts(){
 			}
 		})
         typeOpt.value=typeOpt.value.filter(i=>!i.path||pathArr.includes(i.path))
+        // 如果图表和表格所有选项都没有,则不显示图表插入选项和表格插入选项
+        const chartPathArr=[
+            'chartsetting',
+            'commordityChartBase',
+            'chartrelevance',
+            'fittingEquationList',
+            'statisticFeatureList',
+            'crossVarietyChartList',
+            'rangeAnalysis'
+        ]
+        if(!chartPathArr.some(item=>pathArr.includes(item))){
+            typeOpt.value=typeOpt.value.filter(i=>i.label!=='图库')
+        }
+
+        const sheetPathArr=[
+            'sheetList',
+            'sheetTimeList',
+            'sheetMixedList',
+        ]
+        if(!sheetPathArr.some(item=>pathArr.includes(item))){
+            typeOpt.value=typeOpt.value.filter(i=>i.label!=='表格')
+        }
         if(typeOpt.value.length>0){
             activeType.value=typeOpt.value[0].value
         }
@@ -135,13 +144,10 @@ function handleConfirmInsert(){
         </ul>
         <div class="main-box">
             <ETAChart @update="handleSelectChart" v-if="activeType==='图表插入'"/>
-            <MyETAChart @update="handleSelectChart" v-if="activeType==='批量插入'"/>
             <SheetTableChart @update="handleSelectChart" v-if="activeType==='表格插入'"/>
             <SandTableImg @update="handleSelectChart" v-if="activeType==='沙盘插入'"/>
             <SemanticsImg @update="handleSelectChart" v-if="activeType==='语义分析插入'"/>
             <MaterialImg @update="handleSelectChart" v-if="activeType==='素材库'"/>
-            <StatisticAnalysis @update="handleSelectChart" v-if="activeType==='统计分析'"/>
-            <PriceChart @update="handleSelectChart" v-if="activeType==='商品价格曲线'"/>
             <BalanceSheet @update="handleSelectChart" @insert="handleConfirmInsert" v-if="activeType==='平衡表'"/>
             <ETAForumChart @update="handleSelectChart" v-if="activeType==='etaForum'"/>
             <AIForecastingModel @update="handleSelectChart" v-if="activeType==='AI预测模型'"/>