Эх сурвалжийг харах

Merge branch 'requirement_380' into debug

cldu 1 долоо хоног өмнө
parent
commit
9bc7920cc1

BIN
src/assets/img/icons/demonstrate_icon.png


+ 9 - 1
src/routes/modules/BIRoutes.js

@@ -29,5 +29,13 @@ export default [
         },
       },
     ],
-  },
+  },{
+		path: '/biDemonstrate',
+		component: () => import('@/views/BI_manage/biDemo.vue'),
+		name: '看板演示',
+		meta:{
+			name_en:''
+		},
+		hidden: true,
+	}
 ];

+ 2 - 0
src/utils/buttonConfig.js

@@ -998,12 +998,14 @@ export const BIBoardPermission = {
     BIBoard_refresh:'BI:refresh',//
     BIBoard_sort:'BI:sort',//
     BIBoard_view:'BI:view',//bi看板查看数据
+    BIBoard_demonstrate:'BI:demonstrate',//演示
 }
 
 /* 首页配置 */
 export const homePagePermission = {
     home_boarddetail:'home:boardDetail',
     home_setbiboard:'home:setBiBoard',//
+    home_demonstrate:'home:demonstrate',//演示
 }
 
 

+ 87 - 0
src/views/BI_manage/biDemo.vue

@@ -0,0 +1,87 @@
+<template>
+  <div class="home-page">
+    <div class="top-nav-box">
+      <div class="name">{{boardInfo&&boardInfo.BiDashboardName}}</div>
+    </div>
+    <div class="bottom-content">
+      <BIBoardContent ref="boardContent" :knowList.sync="knowledgeList" v-model="boardDataList" :canDemo="isCanDemo" renderHeight="calc(100vh - 60px)"/>
+    </div>
+  </div>
+</template>
+
+<script>
+import BIBoardContent from '@/views/BI_manage/components/BoardContent.vue'
+import { getPublicSettingsApi } from '@/api/modules/oldApi';
+import apiBiBoard from '@/api/modules/BIBoard.js'
+export default {
+  components:{BIBoardContent},
+  data() {
+    return {
+      DashboardId:'',
+      boardInfo: null,//看板详情数据
+      boardDataList: [],//看板数据
+      knowledgeList:[],//知识资源模块列表的全部数据
+      isCanDemo: false,//是否可以演示
+    };
+  },
+
+  methods: {
+    async getBoardDetail() {
+      const res = await apiBiBoard.boardDetail({ DashboardId: this.DashboardId })
+      if (res.Ret === 200) {
+        this.boardInfo = res.Data
+        document.title = this.boardInfo.BiDashboardName || '看板演示';
+        this.boardDataList = res.Data.List || []
+        this.handleKnowList();
+      }
+    },
+
+    async handleKnowList(){
+      let item = this.boardDataList.find(_=>_.Type == 3);
+      if(!item) return;
+      let res = await apiBiBoard.getKnowledge({ BiDashboardDetailId:item.BiDashboardDetailId });
+      if(res.Ret != 200) return;
+      this.knowledgeList = (res.Data && res.Data.KnowledgeResourceList) || [];
+      if(this.knowledgeList.length > 0) this.setFirstKnow();
+    },
+
+    setFirstKnow(){
+      this.$nextTick(()=>{
+        this.$refs.boardContent && this.$refs.boardContent.setFirstKnow()
+      })
+    },
+
+    async getPublicSettings() {
+      const res = await getPublicSettingsApi();
+      if (res.Ret !== 200) return
+      this.$store.commit('SET_DYNAMIC_LINK', res.Data)
+      this.isCanDemo = true;
+    },
+  },
+
+  created() {
+    this.DashboardId = +this.$route.query.DashboardId || 0;
+    this.getBoardDetail();
+    this.getPublicSettings();
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.home-page{
+  height: 100%;
+  $border-color: #c8cdd9;
+  background-color: #fff;
+  border: 1px solid $border-color;
+  box-sizing: border-box;
+  display: flex;
+  flex-direction: column;
+  .top-nav-box {
+    padding: 14px 20px;
+    border-bottom: 1px solid $border-color;
+  }
+  .bottom-content{
+    flex: 1;
+  }
+}
+</style>

+ 12 - 1
src/views/BI_manage/components/BoardContent.vue

@@ -28,8 +28,10 @@
                 :knowList="knowList"
                 :ref="'item' + item.i"
                 :canDelete="canDelete"
+                :canDemo="canDemo"
                 @deleteKnowledge="deleteKnowledge($event,item)"
-                @deleteKnowledgeType="deleteKnowledgeType($event,item)">
+                @deleteKnowledgeType="deleteKnowledgeType($event,item)"
+                @demonstrate="handleDemonstrate($event,item)">
                 <template v-slot:drag>
                   <img
                     v-if="canDrag"
@@ -74,6 +76,10 @@ export default {
       type: Boolean,
       default: false
     },
+    canDemo:{//能否演示
+      type: Boolean,
+      default: false
+    },
     renderHeight:{
       type:String,
       default:"calc(100vh - 300px)"
@@ -170,6 +176,11 @@ export default {
     getCompType(type) {
       return type === 1 ? ChartBox : type === 2 ? TableBox : KnowBox;
     },
+    handleDemonstrate(data,item){
+      const href = item.Type == 1 ? `${this.$setting.dynamicOutLinks.ChartViewUrl}/chartshow?code=${item.UniqueCode}&fromType=share&lang=zh`
+      : `${this.$setting.dynamicOutLinks.ChartViewUrl}/sheetshow?code=${item.UniqueCode}&isDemo=true`
+      window.open(href,"_blank");
+    },
     handleDel(item){
       if(item.Type == 3) {
         this.deleteKnowBox(item)

+ 14 - 1
src/views/BI_manage/components/ChartBox.vue

@@ -3,6 +3,12 @@
     <div class="top-title-box">
       <div class="title">{{ chartInfo&&chartInfo.ChartName }}</div>
       <div class="opt-box">
+        <img 
+          class="icon" 
+          v-if="canDemo && chartInfo && chartInfo.HaveOperaAuth" 
+          src="~@/assets/img/icons/demonstrate_icon.png" 
+          alt="" 
+          @click="handleDemo"/>
         <img
           class="icon"
           src="~@/assets/img/icons/refresh_blue_new.png"
@@ -88,7 +94,11 @@ export default {
   components: { Chart },
   mixins: [chartSetMixin],
   props: {
-    compData: null
+    compData: null,
+    canDemo:{
+      type:Boolean,
+      default:false
+    },
   },
   watch: {
     tableData: {
@@ -126,6 +136,9 @@ export default {
     }
   },
   methods: {
+    handleDemo(){
+       this.$emit('demonstrate',this.chartInfo)
+    },
     getWidth(type){
       let w = '50%';
       if(type == 'source'){

+ 14 - 1
src/views/BI_manage/components/TableBox.vue

@@ -9,6 +9,12 @@
     <div class="top-title-box">
       <div class="title">{{ info&&info.ExcelName }}</div>
       <div class="opt-box">
+        <img 
+          class="icon" 
+          v-if="canDemo && info" 
+          src="~@/assets/img/icons/demonstrate_icon.png" 
+          alt="" 
+          @click="handleDemo"/>
         <img
           class="icon"
           src="~@/assets/img/icons/refresh_blue_new.png"
@@ -108,7 +114,11 @@ import * as sheetInterface from "@/api/modules/sheetApi.js";
 import tooltipHidable from "@/directives/tooltip-hidable.js"
 export default {
   props: {
-    compData: null
+    compData: null,
+    canDemo:{
+      type:Boolean,
+      default:false
+    },
   },
   data() {
     return {
@@ -129,6 +139,9 @@ export default {
     }
   },
   methods: {
+    handleDemo(){
+       this.$emit('demonstrate',this.info)
+    },
     goDetail() {
       const pathMap = new Map([
         [1, '/sheetList'],

+ 16 - 1
src/views/BI_manage/index.vue

@@ -75,6 +75,12 @@
       ></el-cascader>
 
       <div class="right-opt-box" v-if="boardInfo">
+        <el-button
+          v-if="permissionBtn.isShowBtn('BIBoardPermission','BIBoard_demonstrate')"
+          type="text"
+          @click="demonStrate"
+          >演示</el-button
+        >
         <el-button
           v-if="navType === 1&&permissionBtn.isShowBtn('BIBoardPermission','BIBoard_setcommon')"
           type="text"
@@ -96,7 +102,7 @@
       </div>
     </div>
     <!-- 看板内容模块 -->
-    <BIBoardContent ref="boardContent" :knowList.sync="knowledgeList" v-model="boardDataList" :boardInfo="boardInfo" renderHeight="calc(100vh - 260px)"/>
+    <BIBoardContent ref="boardContent" :knowList.sync="knowledgeList" v-model="boardDataList" :boardInfo="boardInfo" :canDemo="true" renderHeight="calc(100vh - 260px)"/>
 
     <!-- 设置共享 -->
     <set-share v-model="showSetShare" :boardInfo="boardInfo" @change="handleSetShareBack"/>
@@ -175,6 +181,15 @@ export default {
     
   },
   methods: {
+    demonStrate(){
+      const href = this.$router.resolve({
+          path:'/biDemonstrate',
+          query:{
+              DashboardId:this.selectBoardId,
+          }
+      }).href
+      window.open(href,"_blank")
+    },
     // 撤回设置公共
     handleBackSetCommon(){
       apiBiBoard.cancelBoardCommon({

+ 11 - 1
src/views/home_manage/index.vue

@@ -3,12 +3,13 @@
     <div class="top-nav-box">
       <div class="name">{{boardInfo&&boardInfo.BiDashboardName}}</div>
       <div class="btns">
+        <el-button type="text" v-if="boardInfo&&permissionBtn.isShowBtn('homePagePermission','home_demonstrate')" @click="demonStrate">演示</el-button>
         <el-button type="text" v-if="boardInfo&&permissionBtn.isShowBtn('homePagePermission','home_boarddetail')" @click="handleGoDetail">看板详情</el-button>
         <el-button type="text" @click="showSet=true" v-permission="permissionBtn.homePagePermission.home_setbiboard">设置看板</el-button>
       </div>
     </div>
     <!-- 看板内容模块 -->
-    <BIBoardContent ref="boardContent" :knowList.sync="knowledgeList" v-model="boardDataList" renderHeight="calc(100vh - 190px)"/>
+    <BIBoardContent ref="boardContent" :knowList.sync="knowledgeList" v-model="boardDataList" :canDemo="true" renderHeight="calc(100vh - 190px)"/>
 
     <!-- 设置看板 -->
     <SelectBoard v-model="showSet" :boardId="boardId" :homeBoardInfo="homeBoardInfo" @change="getBoardData"/>
@@ -35,6 +36,15 @@ export default {
     this.getBoardData()
   },
   methods: {
+    demonStrate(){
+      const href = this.$router.resolve({
+          path:'/biDemonstrate',
+          query:{
+              DashboardId:this.boardId,
+          }
+      }).href
+      window.open(href,"_blank")
+    },
     handleGoDetail(){
       this.$router.push({
         path:'/BIBoard',