浏览代码

Merge branch 'debug' of http://8.136.199.33:3000/eta_gn_front/eta_front into debug

shanbinzhang 2 月之前
父节点
当前提交
1e370df80e
共有 36 个文件被更改,包括 1371 次插入359 次删除
  1. 147 0
      src/api/modules/approve.js
  2. 20 1
      src/api/modules/knowledge.js
  3. 二进制
      src/assets/img/ppt_m/view-icon-delete.png
  4. 二进制
      src/assets/img/ppt_m/view-icon-download.png
  5. 二进制
      src/assets/img/ppt_m/view-icon-edit.png
  6. 二进制
      src/assets/img/ppt_m/view-icon-present.png
  7. 二进制
      src/assets/img/ppt_m/view-icon-publish.png
  8. 二进制
      src/assets/img/ppt_m/view-icon-submit.png
  9. 17 7
      src/components/notificationMsg.vue
  10. 19 0
      src/routes/modules/knowledgeRoutes.js
  11. 31 3
      src/utils/buttonConfig.js
  12. 1 0
      src/views/BI_manage/components/KnowBox.vue
  13. 2 0
      src/views/BI_manage/components/SelectKnow.vue
  14. 2 1
      src/views/BI_manage/editBoard.vue
  15. 98 78
      src/views/approve_manage/approveDetail.vue
  16. 36 43
      src/views/approve_manage/approveEdit.vue
  17. 93 51
      src/views/approve_manage/approveList.vue
  18. 51 75
      src/views/approve_manage/approveSetting.vue
  19. 65 0
      src/views/approve_manage/config/tableConfig.js
  20. 9 2
      src/views/approve_manage/mixins/approveMixins.js
  21. 6 2
      src/views/knowledge_manage/components/eventPreview.vue
  22. 1 0
      src/views/knowledge_manage/components/importExcelDia.vue
  23. 5 5
      src/views/knowledge_manage/components/importFileDia.vue
  24. 1 1
      src/views/knowledge_manage/components/importMoreFileDia.vue
  25. 50 14
      src/views/knowledge_manage/edit.vue
  26. 162 19
      src/views/knowledge_manage/list.vue
  27. 1 0
      src/views/knowledge_manage/tagSetting.vue
  28. 17 1
      src/views/ppt_manage/mixins/pptMixins.js
  29. 18 4
      src/views/ppt_manage/newVersion/components/catalog/addPptBaseDia.vue
  30. 16 6
      src/views/ppt_manage/newVersion/components/catalog/mergePPTDialog.vue
  31. 3 1
      src/views/ppt_manage/newVersion/components/editor/InsertKnowledge.vue
  32. 330 0
      src/views/ppt_manage/newVersion/components/editor/setBaseInfo.vue
  33. 116 37
      src/views/ppt_manage/newVersion/pptCatalog.vue
  34. 48 6
      src/views/ppt_manage/newVersion/pptEditor.vue
  35. 3 1
      src/views/report_manage/reportV2/normalReport/components/KnowResource.vue
  36. 3 1
      src/views/report_manage/reportV2/smartReport/components/KnowResource.vue

+ 147 - 0
src/api/modules/approve.js

@@ -478,4 +478,151 @@ export const approveInterence = {
     readPublicMsg(params) {
         return http.post("/datamanage/data_approve/message/read",params)
     },
+    /*------------观点库审批接口----------- */
+    // 获取分类树
+    getKnowledgeApproveClassifyTree(params){
+        return http.get("/knowledge_approve/classify/list",params)
+    },
+    /**
+     * 获取审批流列表
+     * @param {Object} params 
+     * @param {Number} params.PageSize
+     * @param {Number} params.CurrentIndex
+     * @param {Number} params.ClassifyId 关联报告二级分类ID
+     * @param {String} params.Keyword
+     * @param {Number} params.SortRule 排序方式: 1-正序; 2-倒序(默认)
+     * @returns 
+     */
+    getKnowledgeApproveFlowList(params){
+        return http.get("/knowledge_approve/flow/list",params)
+    },
+    /**
+     * 删除审批流
+     * @param {Object} params 
+     * @param {Number} params.KnowledgeResourceApproveFlowId
+     * @returns 
+     */
+    deleteKnowledgeApproveFlow(params){
+        return http.post("/knowledge_approve/flow/remove",params)
+    },
+    /**
+     * 新增审批流
+     * @param {Object} params 
+     * @param {number} params.KnowledgeResourceApproveFlowId 0
+     * @param {String} params.FlowName 审批流名称
+     * @param {Number} params.ClassifyId 分类ID
+     * @param {Object[]} params.Nodes 审批节点
+     * @param {Number} params.Nodes[].ApproveType 审批类型:1-依次审批;2-会签;3-或签
+     * @param {Object[]} params.Nodes[].Users 审批人信息
+     * @param {String} params.Nodes[].Users[].UserType 审批人类型: user-用户; role-角色
+     * @param {Number} params.Nodes[].Users[].UserId 用户/角色ID
+     * @param {String} params.Nodes[].Users[].UserName 用户/角色姓名
+     * @returns 
+     */
+    addNewKnowledegApproveFlow(params){
+        return http.post("/knowledge_approve/flow/add",params)
+    },
+
+    /**
+     * 编辑审批流
+     * @param {Object} params 
+     * @param {number} params.KnowledgeResourceApproveFlowId id
+     * @param {String} params.FlowName 审批流名称
+     * @param {Number} params.ClassifyId 分类ID
+     * @param {Object[]} params.Nodes 审批节点
+     * @param {Number} params.Nodes[].ApproveType 审批类型:1-依次审批;2-会签;3-或签
+     * @param {Object[]} params.Nodes[].Users 审批人信息
+     * @param {String} params.Nodes[].Users[].UserType 审批人类型: user-用户; role-角色
+     * @param {Number} params.Nodes[].Users[].UserId 用户/角色ID
+     * @param {String} params.Nodes[].Users[].UserName 用户/角色姓名
+     * @returns 
+     */
+    editKnowledgeApproveFlow(params){
+        return http.post("/knowledge_approve/flow/edit",params)
+    },
+    /**
+     * 获取审批详情
+     * @param {Object} params
+     * @param {Number} params.KnowledgeResourceApproveFlowId
+     * @returns 
+     */
+    getKnowledgeApproveFlowDetail(params){
+        return http.get("/knowledge_approve/flow/detail",params)
+    },
+    /**
+     * 获取审批列表
+     * @param {Object} params 
+     * @param {Number} params.PageSize
+     * @param {Number} params.CurrentIndex
+     * @param {Number} params.ClassifyId  目录id
+     * @param {String} params.Keyword
+     * @param {Number} params.SortRule 排序方式: 1-正序; 2-倒序(默认)
+     * @param {Number} params.SortField 排序字段:1-提交时间;2-处理时间;3-审批时间
+     * @param {Number} params.ListType 列表类型:1-待处理;2-已处理;3-我发起的
+     * @param {Number} params.ApproveState 审批状态:1-待审批;2-已审批/已通过;3-已驳回;4-已撤回/已撤销
+     * @param {Number} params.TimeType 时间类型:1-提交时间;2-处理时间;3-审批时间
+     * @param {String} params.StartTime 开始时间
+     * @param {String} params.EndTime 结束时间
+     * @returns 
+     */
+    getKnowledgeApproveList(params){
+        return http.get("/knowledge_approve/list",params)
+    },
+    /**
+     * 撤销
+     * @param {Object} params 
+     * @param {Number} params.KnowledgeResourceApproveId
+     * @returns 
+     */
+    cancelKnowledgeApprove(params){
+        return http.post("/knowledge_approve/cancel",params)
+    },
+    /**
+     * 获取审批详情
+     * @param {Object} params
+     * @param {Number} params.KnowledgeResourceApproveId
+     * @returns 
+     */
+    getKnowledgeApproveDetail(params){
+        return http.get("/knowledge_approve/detail",params)
+    },
+    /**
+     * 观点通过审批
+     * @param {Object} params 
+     * @param {Number} params.KnowledgeResourceApproveId
+     * @returns 
+     */
+    passKnowledgeApprove(params){
+        return http.post("/knowledge_approve/approve",params)
+    },
+    /**
+     * 驳回审批
+     * @param {Object} params 
+     * @param {Number} params.KnowledgeResourceApproveId
+     * @param {String} params.ApproveRemark
+     * @returns 
+     */
+    rejectKnowledgeApprove(params){
+        return http.post("/knowledge_approve/refuse",params)
+    },
+    /**
+     * 审批消息通知
+     * @param {Object} params 
+     * @param {Number} params.PageSize
+     * @param {Number} params.CurrentIndex
+     * @returns 
+     */
+    getKnowledgeApproveMsgList(params){
+        return http.get("/knowledge_approve/message/list",params)
+    },
+    /**
+     * 消息通知已读
+     * @param {Object} params 
+     * @param {Number} params.MessageId
+     * @returns 
+     */
+    readKnowledgeApproveMsg(params){
+        return http.post("/knowledge_approve/message/read",params)
+    },
+
 }

+ 20 - 1
src/api/modules/knowledge.js

@@ -222,5 +222,24 @@ export const eventInterface = {
    */
   fileImportUpload: params => {
     return http.post('/knowledge/resource/upload',params)
-  }
+  },
+
+  /**
+   * 设置公共
+   * @param {*} params 
+   * KnowledgeResourceId
+   * @returns 
+   */
+  setPublic: params => {
+    return http.post('/knowledge/resource/public',params)
+  },
+  /**
+   * 撤销
+   * @param {*} params 
+   * KnowledgeResourceId
+   * @returns 
+   */
+  setCancel: params => {
+    return http.post('/knowledge/resource/cancel',params)
+  },
 }

二进制
src/assets/img/ppt_m/view-icon-delete.png


二进制
src/assets/img/ppt_m/view-icon-download.png


二进制
src/assets/img/ppt_m/view-icon-edit.png


二进制
src/assets/img/ppt_m/view-icon-present.png


二进制
src/assets/img/ppt_m/view-icon-publish.png


二进制
src/assets/img/ppt_m/view-icon-submit.png


+ 17 - 7
src/components/notificationMsg.vue

@@ -20,6 +20,8 @@
 
                     <!-- 图表 -->
                     <el-tab-pane v-if="tabsShow.third" :label="`图表审批${activeName==='chart'?'('+UnreadTotal+')':''}`" name="chart"></el-tab-pane>
+                    <!-- 观点审批 -->
+                    <el-tab-pane v-if="tabsShow.standpoint" :label="`观点审批${activeName==='standpoint'?'('+UnreadTotal+')':''}`" name="standpoint"></el-tab-pane>
                 </el-tabs>
                 <div class="massage-list" v-if="visible">
                     <div class="message-item" :class="{'IsRead':item.IsRead}" v-for="item in msgList" :key="item.Id" @click="readMsg(item)">
@@ -34,7 +36,7 @@
                             <!-- 审批内容 -->
                             <div class="content" v-if="activeName==='first'">{{item.Content||''}}&nbsp;</div>
                             <!-- 看板审批 内容部分-->
-                            <div class="content" v-else-if="['second','edb','chart'].includes(activeName)">{{item.Remark||''}}&nbsp;</div>
+                            <div class="content" v-else-if="['second','edb','chart','standpoint'].includes(activeName)">{{item.Remark||''}}&nbsp;</div>
                             <!-- 权限内容 -->
                             <div class="content" v-else-if="activeName==='third'">
                                 {{item.Remark||''}}
@@ -188,11 +190,12 @@ export default {
                 SubSource: 0,
             },
             tabsShow:{
-              first:true, //研报
+              first:false, //研报
               second:false, //BI
               third:true, //资产
               edb: true, //指标公开审批
               chart:true, //图表公开审批
+              standpoint:true, //观点
             },
 
             //驳回弹窗
@@ -310,6 +313,7 @@ export default {
                 'third': operateAuthInterface.redMessage,
                 'edb': approveInterence.readPublicMsg,
                 'chart': approveInterence.readPublicMsg,
+                'standpoint': approveInterence.readKnowledgeApproveMsg,
             }
             if(!apiMap[this.activeName]) return 
             const res = await apiMap[this.activeName]({MessageId: this.activeName==='third'?msg.DataPermissionMessageId:msg.Id})
@@ -321,15 +325,21 @@ export default {
             //报告点击处理
             this.activeName === 'first' && this.handleReportNotice(msg)
 
-            if(['second','edb','chart'].includes(this.activeName)){
+            if(['second','edb','chart','standpoint'].includes(this.activeName)){
                 const type = msg.ApproveState===1?'approve':msg.ApproveState===4?'detail':'myself';
 
+                const ids = {
+                    'second':'BiApproveId',
+                    'edb':'DataApproveId',
+                    'chart':'DataApproveId',
+                    'standpoint':'KnowledgeResourceApproveId',
+                }
                 this.$router.push({
                     path:'/approveDetail',
                     query:{
                         mainType:this.activeName === 'second' ? 'bi' : this.activeName,
                         type,
-                        approveId:this.activeName === 'second' ? msg.BiApproveId:msg. DataApproveId, 
+                        approveId:msg[ids[this.activeName]], 
                     }
                 })
             }
@@ -343,15 +353,16 @@ export default {
                 'third': operateAuthInterface.getNoticeList,
                 'edb': approveInterence.getPublicMsgList,
                 'chart': approveInterence.getPublicMsgList,
+                'standpoint': approveInterence.getKnowledgeApproveMsgList,
             }
             if(!apiMap[this.activeName]) return 
-            
+
             let params = ['edb','chart'].includes(this.activeName) 
                 ? {
                     CurrentIndex:1,
                     PageSize:1000,
                     DataType: this.activeName==='edb'?1:2
-                  }
+                }
                 : {
                     CurrentIndex:1,
                     PageSize:1000,
@@ -465,7 +476,6 @@ export default {
         right:0;
         box-sizing: border-box;
     }
-
     .el-tabs__header {
         padding-right: 40px;
     }

+ 19 - 0
src/routes/modules/knowledgeRoutes.js

@@ -40,6 +40,25 @@ export default [{
         name_en:""
       },
     },
+    {
+      path: "/knowledge_standpoint",
+      name: "观点库",
+      component: () => import('@/views/knowledge_manage/list.vue'),
+      meta:{
+        name_en:""
+      },
+    },
+    {
+      path: "/knowledgeAdd",
+      name: "新增",
+      component: () => import('@/views/knowledge_manage/edit.vue'),
+      meta:{
+        name_en:"",
+        pathFrom: "knowledge_event",
+        pathName: "事件库",
+        pathName_en:""
+      },
+    },
     {
       path: "/knowledgeEdit",
       name: "编辑",

+ 31 - 3
src/utils/buttonConfig.js

@@ -890,6 +890,12 @@ export const approveFlowPermission = {
     edbApproveFlow_edit:"edbApproveFlow:edit",
     /* 图表审批流 */
     chartApproveFlow_edit:"chartApproveFlow:edit",
+    //观点审批
+    standpointList_list:'standpointList:list',//列表
+    standpointList_add:'standpointList:add',//添加审批流
+    standpointList_edit:'standpointList:edit',//编辑审批流
+    standpointList_delete:'standpointList:delete',//删除审批流
+    standpointList_save:'standpointList:save',//保存
 }
 /*
  * --------------------------------------------------------------------------审批管理------------------------------------------------
@@ -900,7 +906,7 @@ export const approvePermission = {
     reportApprove_agree:'reportApprove:agree',//通过(审批详情-通过按钮)
     reportApprove_detail:'reportApprove:detail',//详情(列表中的按钮)
     reportApprove_rejectreason:'reportApprove:rejectreason',//驳回理由(列表中的按钮)
-    reportApprove_return:'reportApprove:return',//返回(审批详情-返回按钮)
+    // reportApprove_return:'reportApprove:return',//返回(审批详情-返回按钮)
     reportApprove_repeal:'reportApprove:repeal',//撤回(列表中的按钮,审批详情-撤回按钮)
     reportApprove_download_pdf:'reportApprove:download:pdf',//下载PDF
     reportApprove_download_img:'reportApprove:download:img',//下载长图
@@ -910,6 +916,14 @@ export const approvePermission = {
     edbApprove_edit: 'edbApprove:edit',
     /* 图表审批 */
     chartApprove_edit: 'chartApprove:edit',
+    // 观点库审批
+    standpointApprove_cancel:'standpointApprove:cancel', //撤销
+    // standpointApprove_back:'standpointApprove:back',//返回
+    standpointApprove_rejectReason:'standpointApprove:rejectReason',//驳回理由
+    standpointApprove_detail:'standpointApprove:detail',//详情
+    standpointApprove_agree:'standpointApprove:agree',//同意
+    standpointApprove_reject:'standpointApprove:reject',//驳回
+    standpointApprove_approve:'standpointApprove:approve',//审批
 }
 
 /* 图表主题配置 */
@@ -938,8 +952,8 @@ export const knowledgePermission = {
     policy_edit: 'policy:edit',
     policy_del: 'policy:del',
     policy_view: 'policy:view',
-
-    //观点
+ 
+    //报告
     viewpoint_add: 'viewpoint:add',
     viewpoint_import: 'viewpoint:import',
     viewpoint_classifyEdit: 'viewpoint:classifyEdit',
@@ -956,6 +970,20 @@ export const knowledgePermission = {
     know_edit: 'know:edit',
     know_del: 'know:del',
     know_view: 'know:view',
+
+    //观点库
+    standpoint_add: 'standpoint:add', //添加
+    standpoint_classifyEdit: 'standpoint:classifyEdit',//分类管理
+    standpoint_tagEdit: 'standpoint:tagEdit',//标签管理
+    standpoint_import: 'standpoint:import',//导入
+    standpoint_my_view: 'standpoint:my:view',//我的观点-查看数据
+    standpoint_my_edit: 'standpoint:my:edit',//我的观点-编辑
+    standpoint_my_del: 'standpoint:my:del',//我的观点-删除
+    standpoint_my_setpublic: 'standpoint:my:setpublic',//我的观点-设置公共
+    standpoint_my_back: 'standpoint:my:back',//我的观点-撤销
+    standpoint_public_view: 'standpoint:public:view',//公共观点-查看数据
+    standpoint_public_edit: 'standpoint:public:edit',//公共观点-编辑
+    standpoint_public_del: 'standpoint:public:del',//公共观点-删除
 }
 
 

+ 1 - 0
src/views/BI_manage/components/KnowBox.vue

@@ -56,6 +56,7 @@ const knowTypes = [
   { type: 1, title: "政策库" },
   { type: 2, title: "报告库" },
   { type: 3, title: "知识库" },
+  { type: 4, title: "观点库" },
 ];
 export default {
   props: {

+ 2 - 0
src/views/BI_manage/components/SelectKnow.vue

@@ -193,6 +193,7 @@ const knowMessage = {
   1: { title: "政策库" },
   2: { title: "报告库" },
   3: { title: "知识库" },
+  4: { title: "观点库" },
 };
 import { eventInterface } from "@/api/modules/knowledge";
 import mPage from "@/components/mPage.vue";
@@ -354,6 +355,7 @@ export default {
         ResourceType: this.ResourceType,
         IncludeFile:'no',
         IsShowMe,
+        IsQueryRef:true,
       };
       this.dataLoading = true;
       const res = await eventInterface.getEventListByES(params);

+ 2 - 1
src/views/BI_manage/editBoard.vue

@@ -19,8 +19,9 @@
         <el-dropdown-menu slot="dropdown">
           <el-dropdown-item command="0">事件库</el-dropdown-item>
           <el-dropdown-item command="1">政策库</el-dropdown-item>
-          <el-dropdown-item command="2">报告库</el-dropdown-item>
+          <!-- <el-dropdown-item command="2">报告库</el-dropdown-item> -->
           <el-dropdown-item command="3">知识库</el-dropdown-item>
+          <el-dropdown-item command="4">观点库</el-dropdown-item>
         </el-dropdown-menu>
       </el-dropdown>
       <div class="right-btns">

+ 98 - 78
src/views/approve_manage/approveDetail.vue

@@ -1,28 +1,18 @@
 <template>
     <!-- 审批详情:查看、进行审批操作 -->
     <div class="approve-detail-wrap" v-if="isETAApprove || IsBIApprove">
-
-        <!-- bi审批 -->
-        <template v-if="mainType==='bi'">
+        <template v-if="['bi','standpoint'].includes(mainType)">
             <div class="approve-detail">
                 <div class="approve-info">
-                    <span>{{ mainType == 'report'?$t('AprrovalDetailPage.report_name_info'):$t('AprrovalPage.kanban_name')}}:{{reportInfo.title||''}}</span>
-                    <span v-if="mainType == 'report'" style="margin-left: 60px;">{{$t('AprrovalDetailPage.classification_info')}}:{{reportInfo.classify||''}}</span>
+                    <span>{{ mainType == 'bi'?$t('AprrovalPage.kanban_name'):'观点标题'}}:{{reportInfo.title||''}}</span>
                     <span style="min-width: 100px;margin-left: 60px;">{{$t('AprrovalPage.submitter_lable')}}:{{reportInfo.approver||''}}</span>
                 </div>
-                <div v-if="mainType == 'report'" class="approve-content" 
+                <div v-if="mainType == 'standpoint'" class="approve-content" 
+                    style="padding: 20px;"
                     v-loading="isLoading"
-                    element-loading-text="研报加载中...">
-                    <component v-if="reportInfo.reportId&&!isError"
-                        :is="reportInfo.componentName"
-                        :reportId="reportInfo.reportId"
-                        :isPreview="true"
-                        :isEn="reportInfo.type===2"
-                        @reportStartLoading="isLoading=true"
-                        @reportEndLoading="isLoading=false"
-                        @reportError="isError=true"
-                    ></component>
-                    <tableNoData v-if="isError" text="无法获取到报告内容,该报告可能已被删除!"></tableNoData>
+                    element-loading-text="观点加载中...">
+                    <div v-if="standpointContent" v-html="standpointContent"></div>
+                    <tableNoData v-else text="暂无观点数据"></tableNoData>
                 </div>
                 <div v-else class="approve-content" 
                     v-loading="isLoading"
@@ -34,11 +24,11 @@
                 <div class="tool-btn">
                     <!-- 根据审批的状态决定显示 -->
                     <el-button type="danger" @click="changeApprove('reject')"
-                        v-if="formType==='approve'&&approveInfo.isCurrentApprover&&permissionBtn.isShowBtn('approvePermission','reportApprove_reject')">{{$t('AprrovalDetailPage.rejected_btn')}}</el-button>
+                        v-if="isShowReject">{{$t('AprrovalDetailPage.rejected_btn')}}</el-button>
                     <el-button type="primary" @click="changeApprove('pass')"
-                        v-if="formType==='approve'&&approveInfo.isCurrentApprover&&permissionBtn.isShowBtn('approvePermission','reportApprove_agree')">{{$t('AprrovalDetailPage.agree_btn')}}</el-button>
+                        v-if="isShowAgree">{{$t('AprrovalDetailPage.agree_btn')}}</el-button>
                     <el-button type="primary" @click="changeApprove('return')"
-                        v-if="formType==='myself'&&approveInfo.state!==4&&permissionBtn.isShowBtn('approvePermission','reportApprove_repeal')">{{$t('AprrovalDetailPage.cancel_btn')}}</el-button>
+                        v-if="isShowCancel">{{$t('AprrovalDetailPage.cancel_btn')}}</el-button>
                     <el-button type="primary" plain @click="$router.replace(`/approveList?formType=${formType}&mainType=${mainType}`)">{{$t('AprrovalDetailPage.back_btn')}}</el-button>
                 </div>
                 <div class="approve-timeline-wrap">
@@ -83,6 +73,7 @@ import TimeLine from './components/timeLine.vue';
 import RejectDialog from './components/rejectDialog.vue';
 import {approveInterence} from '@/api/modules/approve.js';
 import {departInterence} from '@/api/api.js'
+import { eventInterface } from '@/api/modules/knowledge';
 import reportApproveConfig from "@/mixins/reportApproveConfig.js"
 import apiBiBoard from '@/api/modules/BIBoard.js'
 import BIBoardContent from '@/views/BI_manage/components/BoardContent.vue';
@@ -99,7 +90,7 @@ export default {
             isDetailDialogShow:false,
             TimeLineData:[],
             formType:'detail',//进入审批详情的方式:approve(待处理)/detail(已处理)/myself(我发起的)
-            mainType:'report', //report(研报) bi(bi看板)
+            mainType:'bi', //report(研报) bi(bi看板)
             reportInfo:{ //报告相关信息
                 reportId:0,//研报or智能研报的报告id
                 title:'',
@@ -117,13 +108,26 @@ export default {
             boardDataList:[],
             knowledgeList:[],//知识资源模块列表的全部数据
 
-            setPublicDetailInfo: null
+            setPublicDetailInfo: null,
+            standpointContent:'',
         };
     },
     computed:{
         UserId(){
             return Number(localStorage.getItem("AdminId"));
         },
+        isShowReject(){
+            return this.formType==='approve' && this.approveInfo.isCurrentApprover &&
+                   (this.mainType == 'standpoint' ? this.isShowBtn('standpointApprove_reject') : this.isShowBtn('reportApprove_reject'))
+        },
+        isShowAgree(){
+            return this.formType==='approve' && this.approveInfo.isCurrentApprover &&
+                   (this.mainType == 'standpoint' ? this.isShowBtn('standpointApprove_agree') : this.isShowBtn('reportApprove_agree'))
+        },
+        isShowCancel(){
+            return this.formType==='myself' && this.approveInfo.state!==4 &&
+                   (this.mainType == 'standpoint' ? this.isShowBtn('standpointApprove_cancel') : this.isShowBtn('reportApprove_repeal'))
+        },
     },
     methods: {
         getApproveDetail(){
@@ -150,6 +154,38 @@ export default {
                 this.approveInfo.stateText=['','pending','passed','reject','return'][Approve.State]
             })
         },
+        getStandPointApproveDetail(){
+            const {type,approveId} = this.$route.query
+            if(!approveId) return 
+            approveInterence.getKnowledgeApproveDetail({
+                KnowledgeResourceApproveId:+approveId
+            }).then(res=>{
+                if(res.Ret!==200) return
+                //格式化时间线数据 
+                this.formatTimeLineData(res.Data) 
+                const {Knowledge={},Approve={}} = res.Data||{}
+                this.reportInfo = {
+                    KnowledgeResourceId:Knowledge.KnowledgeResourceId||0,
+                    title:Knowledge.KnowledgeResourceTitle||'',
+                    classify:Knowledge.KnowledgeClassify||'',
+                    approver:Approve.ApplyUserName||'',
+                }
+                this.formType = type||'detail'
+                this.approveInfo.state=Approve.State
+                this.approveInfo.stateText=['','pending','passed','reject','return'][Approve.State]
+                this.getStandPointDetail();
+            })
+        },
+        async getStandPointDetail(){
+           this.isLoading = true;
+           let res = await eventInterface.getEventDetail({
+            ResourceType:4,
+            KnowledgeResourceId:this.reportInfo.KnowledgeResourceId
+           });
+           this.isLoading = false;
+           if(res.Ret != 200) return;
+           this.standpointContent = res.Data.Content;
+        },
         getBiApproveDetail(){ 
             const {type,approveId} = this.$route.query
             if(!approveId) return 
@@ -211,8 +247,8 @@ export default {
             //排序过的审批节点,遍历
             let currentIndex = 0
             let Nodes = ApproveFlowNodes.map((i,index)=>{
-                //找到当前节点的index
-                if((i.ReportApproveNodeId===Approve.CurrNodeId && this.mainType == 'report') || (i.BiApproveNodeId===Approve.CurrNodeId && this.mainType == 'bi')){
+                //找到当前节点的index 
+                if((i.BiApproveNodeId===Approve.CurrNodeId && this.mainType == 'bi') || (i.KnowledgeResourceApproveNodeId===Approve.CurrNodeId && this.mainType == 'standpoint')){
                     currentIndex = index
                 }
                 //审批节点只有一个人时不显示是什么审批流
@@ -220,7 +256,7 @@ export default {
                 const node = {
                     nodeType:2,
                     nodeText:`${this.$t('AprrovalDetailPage.approval_by',{num:i.Users.length}) }`+(i.Users.length>1?strApproveType:''),
-                    nodeStatus:(i.ReportApproveNodeId===Approve.CurrNodeId && this.mainType == 'report') || (i.BiApproveNodeId===Approve.CurrNodeId && this.mainType == 'bi')?'process':'future',
+                    nodeStatus:(i.BiApproveNodeId===Approve.CurrNodeId && this.mainType == 'bi') || (i.KnowledgeResourceApproveNodeId===Approve.CurrNodeId && this.mainType == 'standpoint')?'process':'future',
                     approveType:ApproveType[i.ApproveType]
                 }
                 const approveList = i.Users.map(u=>{
@@ -232,8 +268,8 @@ export default {
                         approveReason:ApproveRemark
                     }
                 })
-                //检测当前节点的User与当前用户是否匹配 且审批需要是待审批状态
-                if((i.ReportApproveNodeId===Approve.CurrNodeId&&Approve.State===1&&this.mainType == 'report') || (i.BiApproveNodeId===Approve.CurrNodeId&&this.mainType=='bi'&&Approve.State===1)){
+                //检测当前节点的User与当前用户是否匹配 且审批需要是待审批状态 
+                if((i.BiApproveNodeId===Approve.CurrNodeId&&this.mainType=='bi'&&Approve.State===1) || (i.KnowledgeResourceApproveNodeId===Approve.CurrNodeId&&this.mainType=='standpoint'&&Approve.State===1)){
                     //当前节点的User中,有没有当前用户
                     const hasUser = i.Users.findIndex(u=>u.UserId===this.UserId)
                     if(hasUser!==-1){
@@ -341,45 +377,43 @@ export default {
             }
             let res = null
             if(type==='return'){ 
-                res = this.mainType === 'bi' 
-                    ?  await approveInterence.cancelBiApprove({BiApproveId:Number(approveId)})
-                    :  await approveInterence.cancelPublicApprove({DataApproveId: Number(approveId)})
+                const reqs = {
+                    bi : { fn: approveInterence.cancelBiApprove , params: {BiApproveId:Number(approveId)}},
+                    standpoint: { fn: approveInterence.cancelKnowledgeApprove , params: {KnowledgeResourceApproveId:Number(approveId)}},
+                }
+                res = Object.keys(reqs).includes(this.mainType) ?  await reqs[this.mainType].fn(reqs[this.mainType].params)
+                                                                :  await approveInterence.cancelPublicApprove({DataApproveId: Number(approveId)});
             }
-            if(type==='pass'){ 
-                res = this.mainType === 'bi' 
-                    ? await approveInterence.passBiApprove({
-                        BiApproveId:Number(approveId),
-                      })
-                    : await approveInterence.passPublicApprove({DataApproveId: Number(approveId)})
+            if(type==='pass'){
+                const reqs = {
+                    bi : { fn: approveInterence.passBiApprove , params: {BiApproveId:Number(approveId)}},
+                    standpoint: { fn: approveInterence.passKnowledgeApprove , params: {KnowledgeResourceApproveId:Number(approveId)}},
+                }
+                res = Object.keys(reqs).includes(this.mainType) ?  await reqs[this.mainType].fn(reqs[this.mainType].params)
+                                                                :  await approveInterence.passPublicApprove({DataApproveId: Number(approveId)})
             }
             if(res.Ret!==200) return 
             this.$message.success( type==='return'?this.$t('AprrovalPage.revoke_success') :this.$t('AprrovalDetailPage.passed_success'));
             type!=='reject'&&(this.$router.replace(`/approveList?mainType=${this.mainType}`))
         },
-        generatePdfLinks(code,type){
-            if(type == 1){
-                const baseUrl= localStorage.getItem('dynamicOutLinks') ? JSON.parse(localStorage.getItem('dynamicOutLinks')).ReportViewUrl : '';
-                return `${baseUrl}/reportshare_pdf?code=${code}&flag=${this.waterMarkStr}`
-            }else if(type == 2){
-                const baseUrl= localStorage.getItem('dynamicOutLinks') ? JSON.parse(localStorage.getItem('dynamicOutLinks')).ReportViewUrl : '';
-                return `${baseUrl}/reportshare_pdf_en?code=${code}&flag=${this.waterMarkStr}`
-            }else if(type==3){
-                const baseUrl= localStorage.getItem('dynamicOutLinks') ? JSON.parse(localStorage.getItem('dynamicOutLinks')).ReportViewUrl : '';
-                return `${baseUrl}/reportshare_smart_pdf?code=${code}`
-            }
-        },
         rejectApprove(reason){
-            this.isDetailDialogShow = false;
-            let req = this.mainType === 'bi' 
-                ? approveInterence.rejectBiApprove({
-                    BiApproveId:Number(this.$route.query.approveId),
-                    ApproveRemark:reason||''
-                  })
-                : approveInterence.refusePublicApprove({
-                    DataApproveId: Number(this.$route.query.approveId),
-                    ApproveRemark:reason||''
-                  });
-
+            this.isDetailDialogShow = false
+            const reqs = {
+                    bi : { 
+                        fn: approveInterence.rejectBiApprove, 
+                        params: { BiApproveId:Number(this.$route.query.approveId), ApproveRemark:reason||''}
+                    },
+                    standpoint: {
+                        fn: approveInterence.rejectKnowledgeApprove, 
+                        params: { KnowledgeResourceApproveId:Number(this.$route.query.approveId), ApproveRemark:reason||''}
+                    },
+            }
+            
+            let req = Object.keys(reqs).includes(this.mainType) ? reqs[this.mainType].fn(reqs[this.mainType].params)
+                                                                : approveInterence.refusePublicApprove({
+                                                                    DataApproveId: Number(this.$route.query.approveId),
+                                                                    ApproveRemark:reason||''
+                                                                });
             req.then(res=>{
                 if(res.Ret!==200) return 
                 this.$message.success(this.$t('AprrovalDetailPage.rejected_success') )
@@ -387,19 +421,9 @@ export default {
             })
             
         },
-        getSystemUserInfo(){
-            departInterence.systemUserInfo().then(res=>{
-                if(res.Ret===200){
-                    const systemUserInfo=res.Data
-                    // 设置水印文案
-                    let waterMarkString=''
-                    if(systemUserInfo){
-                        waterMarkString=`${systemUserInfo.RealName}${systemUserInfo.Mobile?systemUserInfo.Mobile:systemUserInfo.Email}`
-                        waterMarkString=encodeURIComponent(waterMarkString)
-                        this.waterMarkStr=Base64.encode(waterMarkString)
-                    }
-                }
-            })
+        isShowBtn(code){
+            const {approvePermission,checkPermissionBtn}=this.permissionBtn;
+            return checkPermissionBtn(approvePermission[code])
         },
 
 
@@ -426,13 +450,9 @@ export default {
         }
     },
     mounted(){
-        this.mainType = this.$route.query.mainType || 'report';
-        if(this.mainType == 'report') {
-          this.getApproveDetail();
-          this.getSystemUserInfo();
-        }
+        this.mainType = this.$route.query.mainType || 'bi';
         if(this.mainType == 'bi') this.getBiApproveDetail();
-        
+        if(this.mainType == 'standpoint') this.getStandPointApproveDetail();
         ['edb','chart'].includes(this.mainType) && this.getPublicApproveDetail()
     },
     components: { TimeLine, ReportDetail, Reportdtl, RejectDialog, BIBoardContent,EdbChartApproveWrapper }

+ 36 - 43
src/views/approve_manage/approveEdit.vue

@@ -7,18 +7,18 @@
                 <el-form-item :label="$t('SystemManage.ReportApprove.table_col01')" prop="name">
                     <el-input v-model="approveForm.name" :placeholder="$t('ApprovalEdit.name_placeholder')"></el-input>
                 </el-form-item>
-                <el-form-item :label="mainType == 'report' ?$t('SystemManage.ReportApprove.table_col02') : $t('AprrovalPage.association_kanban')" prop="classify">
+                <el-form-item :label="mainType == 'bi' ? $t('AprrovalPage.association_kanban') : '关联分类'" prop="classify">
                     <el-cascader v-model="approveForm.classify"
-                        :placeholder="mainType == 'report' ? $t('ApprovalEdit.report_placeholder') : $t('AprrovalPage.select_associated_Kanban_tip')" clearable
+                        :placeholder="mainType == 'bi' ? $t('AprrovalPage.select_associated_Kanban_tip') : '请选择关联分类'" clearable
                         :disabled="this.$route.query.flowId"
-                        :options="mainType == 'report' ? classifyTree : biClassifyTree"
-                        :props="mainType == 'report' ? {value:'ClassifyId',label:'ClassifyName',children:'Children'} : {value:'BiDashboardClassifyId',label:'BiDashboardClassifyName',children:'Children'}"
+                        :options="mainType == 'bi' ? biClassifyTree : standpointTree"
+                        :props="mainType == 'bi' ? {value:'BiDashboardClassifyId',label:'BiDashboardClassifyName',children:'Children',emitPath: false} : {value:'ClassifyId',label:'ClassifyName',children:'Child',emitPath: false}"
                         style="margin-right: auto;margin-left: 15px;"></el-cascader>
                 </el-form-item>
             </el-form>
             <div class="form-btn">
                 <el-button type="primary" plain @click="routerBack">{{$t('Dialog.cancel_btn')}}</el-button>
-                <el-button v-permission="permissionBtn.approveFlowPermission.reportApprove_save"
+                <el-button v-if="isShowSaveBtn"
                     type="primary" @click="checkFlow">{{$t('Dialog.confirm_save_btn')}}</el-button>
             </div>
         </div>
@@ -66,7 +66,7 @@ export default {
                 classify:'',
                 /* flowNodes:null */
             },
-            mainType:'report',
+            mainType:'bi',
         };
     },
     computed:{
@@ -76,7 +76,11 @@ export default {
                       { max: 20, message: /* '长度在20个字符内' */this.$t('ApprovalEdit.name_max_hint'), trigger: 'change' }],
                 classify:[{ required: true, message: /* '请选择关联报告' */this.$t('ApprovalEdit.report_placeholder'), trigger: 'blur' },]
             }
-        }
+        },
+        isShowSaveBtn(){
+            const auths = { bi:'reportApprove_save', standpoint:'standpointList_save' }
+            return this.isShowBtn(auths[this.mainType] || 'reportApprove_save');
+        },
     },
     methods: {
         async checkFlow(){
@@ -115,26 +119,18 @@ export default {
         async modifyFlow(Nodes){ 
             const {name,classify} = this.approveForm
             const id = this.$route.query.flowId||0;
-
-            const params = this.mainType == 'report' ? {
-                FlowName:name,
-                ReportType:classify[0],
-                ClassifyFirstId:classify[1]||0,
-                ClassifySecondId:classify[2]||0,
-                ClassifyThirdId:classify[3]||0,
-                Nodes
-            } : {
-                BiApproveFlowId:+id,
+            const params = {
                 FlowName:name,
-                ClassifyId:classify[0],
+                ClassifyId:classify,
                 Nodes
             };
+            const key = this.mainType == 'bi' ? 'BiApproveFlowId' : 'KnowledgeResourceApproveFlowId';
+            params[key] = +id || 0;
             let res
             if(id){
-                res = this.mainType == 'report' ? await approveInterence.editApproveFlow({...params,ReportApproveFlowId:Number(id)})
-                                                : await approveInterence.editBiApproveFlow(params);
+                res = this.mainType == 'bi' ? await approveInterence.editBiApproveFlow(params) : await approveInterence.editKnowledgeApproveFlow(params);
             }else{
-                res = this.mainType == 'report' ? await approveInterence.addNewApproveFlow(params) : await approveInterence.addNewBiApproveFlow(params) ;
+                res = this.mainType == 'bi' ? await approveInterence.addNewBiApproveFlow(params) : await approveInterence.addNewKnowledegApproveFlow(params) ;
             }
             if(res.Ret!==200) return
             this.$message.success(/* `${id?'编辑':'新增'}成功` */ id?this.$t('ApprovalEdit.edit_success_text'):this.$t('ApprovalEdit.add_success_text'))
@@ -153,25 +149,6 @@ export default {
                 }
             })
         },
-        getReportFlowDetail(){
-            const id = this.$route.query.flowId||0
-            if(id){
-                approveInterence.getApproveFlowDetail({
-                    ReportApproveFlowId:Number(id)
-                }).then(res=>{
-                    if(res.Ret!==200) return 
-                    const {FlowName,ReportType,ClassifyFirstId,ClassifySecondId,Nodes,ClassifyThirdId} = res.Data||{}
-                    this.approveForm.name = FlowName||''
-
-                    this.approveForm.classify = ClassifyThirdId 
-                        ? [ReportType,ClassifyFirstId,ClassifySecondId,ClassifyThirdId]
-                        : ClassifySecondId
-                        ? [ReportType,ClassifyFirstId,ClassifySecondId]
-                        : [ReportType,ClassifyFirstId]
-                    this.approveForm.flowNodes = Nodes||[]
-                })
-            }
-        },
         getBiFlowDetail(){
             const id = this.$route.query.flowId||0;
             approveInterence.getBiApproveFlowDetail({
@@ -180,20 +157,36 @@ export default {
                 if(res.Ret!==200) return 
                 const {FlowName,Nodes,ClassifyId} = res.Data||{};
                 this.approveForm.name = FlowName||'';
-                this.approveForm.classify = [ClassifyId];
+                this.approveForm.classify = ClassifyId;
+                this.approveForm.flowNodes = Nodes||[];
+            })
+        },
+        getKnowledgeDetail(){
+            const id = this.$route.query.flowId||0;
+            approveInterence.getKnowledgeApproveFlowDetail({
+                KnowledgeResourceApproveFlowId:+id
+            }).then(res=>{
+                if(res.Ret!==200) return 
+                const {FlowName,Nodes,ClassifyId} = res.Data||{};
+                this.approveForm.name = FlowName||'';
+                this.approveForm.classify = ClassifyId;
                 this.approveForm.flowNodes = Nodes||[];
             })
         },
         afterGetBaseConfig(){ //渲染之后执行否则组件会监听不到
             if(this.$route.query.flowId){
-                this.$route.query.mainType == 'report' ? this.getReportFlowDetail() : this.getBiFlowDetail();
+                this.$route.query.mainType == 'bi' ? this.getBiFlowDetail() : this.getKnowledgeDetail();
             }
         },
+        isShowBtn(code){
+            const {approveFlowPermission,checkPermissionBtn}=this.permissionBtn;
+            return checkPermissionBtn(approveFlowPermission[code])
+        },
 
     },
     created(){
         this.mainType = this.$route.query.mainType;
-        this.$route.query.mainType == 'report' ? this.getClassifyTree() : this.getBIClassifyTree() ;
+        this.$route.query.mainType == 'bi' ? this.getBIClassifyTree() : this.getStandpointClassifyTree();
     },
     components: { FlowEdiotr }
 };

+ 93 - 51
src/views/approve_manage/approveList.vue

@@ -30,11 +30,11 @@
                 
                 <!-- bi分类 -->
                 <el-cascader 
-                    v-else-if="activeMainTab==='bi'"
+                    v-else-if="['bi','standpoint'].includes(activeMainTab)"
                     v-model="classify"
-                    :placeholder="activeMainTab == 'report' ? $t('AprrovalPage.associated_report_ipt') : $t('AprrovalPage.select_associated_Kanban_tip')" clearable
-                    :options="activeMainTab == 'report' ? classifyTree : biClassifyTree"
-                    :props="activeMainTab == 'report' ? {value:'ClassifyId',label:'ClassifyName',children:'Children'} : {value:'BiDashboardClassifyId',label:'BiDashboardClassifyName',children:'Children'}"
+                    :placeholder="activeMainTab == 'bi' ? $t('AprrovalPage.select_associated_Kanban_tip') : '请选择关联分类'" clearable
+                    :options="activeMainTab == 'bi' ? biClassifyTree : standpointTree"
+                    :props="activeMainTab == 'bi' ? {value:'BiDashboardClassifyId',label:'BiDashboardClassifyName',children:'Children'} : {value:'ClassifyId',label:'ClassifyName',children:'Child'}"
                     @change="handleCurrentChange(1)">
                 </el-cascader>
                 <div class="select-time-box">
@@ -101,29 +101,25 @@
                     <el-table-column :label="$t('Table.column_operations')" align="center">
                         <template slot-scope="{row}">
                             <template v-if="activeTab==='pending'">
-                                <el-button type="text" style="padding:0;" @click="toApproveDetail(row,'approve')"    
-                                    v-if="permissionBtn.isShowBtn('approvePermission','reportApprove_approve')">{{$t('AprrovalPage.approve_table')}}</el-button>
+                                <el-button type="text" style="padding:0;" @click="toApproveDetail(row,'approve')"  
+                                    v-if="isShowApprove">{{$t('AprrovalPage.approve_table')}}</el-button>
                             </template>
                             <template v-if="activeTab==='processed'">
-                                <el-button type="text" style="padding:0;" @click="toApproveDetail(row,'detail')">{{$t('AprrovalPage.details_table')}}</el-button>
+                                <el-button type="text" style="padding:0;" @click="toApproveDetail(row,'detail')" 
+                                    v-if="isShowDetail">{{$t('AprrovalPage.details_table')}}</el-button>
                                 <el-button type="text" style="padding:0" @click="handleShowDetail(row)" 
-                                    v-if="row.State===3&&permissionBtn.isShowBtn('approvePermission','reportApprove_rejectreason')">{{$t('AprrovalPage.rejection_table')}}</el-button>
+                                    v-if="isShowRejectReason(row)">{{$t('AprrovalPage.rejection_table')}}</el-button>
                                 <!-- 下载长图 下载pdf按钮 -->
                                 <el-button type="text" style="padding:0" v-if="row.DetailPdfUrl&&permissionBtn.isShowBtn('approvePermission','reportApprove_download_pdf')" @click="downloadPdfImg(row,1)">{{$t('ReportManage.smart_btn.download_pdf')}}</el-button>
                                 <el-button type="text" style="padding:0" v-if="row.DetailImgUrl&&permissionBtn.isShowBtn('approvePermission','reportApprove_download_img')" @click="downloadPdfImg(row,2)">{{$t('ReportManage.smart_btn.download_long_image')}}</el-button>
                             </template>
                             <template v-if="activeTab==='originate'">
-                                <el-button type="text" style="padding:0;" @click="toApproveDetail(row,'myself')">{{$t('AprrovalPage.details_table')}}</el-button>
+                                <el-button type="text" style="padding:0;" @click="toApproveDetail(row,'myself')"
+                                    v-if="isShowDetail">{{$t('AprrovalPage.details_table')}}</el-button>
                                 <el-button type="text" style="padding:0;" @click="cancelApprove(row)" 
-                                    v-if="
-                                        ((row.State!==4&&activeMainTab==='bi') 
-                                          || [2,4].includes(activeMainTab)
-                                        )
-                                        &&permissionBtn.isShowBtn('approvePermission','reportApprove_repeal')
-                                    "
-                                >{{$t('AprrovalPage.cancel_table')}}</el-button>
+                                    v-if="isShowRepeal(row)">{{$t('AprrovalPage.cancel_table')}}</el-button>
                                 <el-button type="text" style="padding:0" @click="handleShowDetail(row)" 
-                                    v-if="row.State===3&&permissionBtn.isShowBtn('approvePermission','reportApprove_rejectreason')">{{$t('AprrovalPage.rejection_table')}}</el-button>
+                                    v-if="isShowRejectReason(row)">{{$t('AprrovalPage.rejection_table')}}</el-button>
                             </template>
                         </template>
                         
@@ -166,7 +162,9 @@ import {
         biapprove_pending_columns,
         biapprove_processed_columns,
         biapprove_originate_columns,
-
+        standponit_approve_pending_columns,
+        standpoint_approve_processed_columns,
+        standpoint_approve_originate_columns,
     } from './config/tableConfig'
 const columnsMap = {
     'pending_report':approve_pending_columns,
@@ -175,6 +173,9 @@ const columnsMap = {
     'pending_bi':biapprove_pending_columns,
     'processed_bi':biapprove_processed_columns,
     'originate_bi':biapprove_originate_columns,
+    'pending_standpoint':standponit_approve_pending_columns,
+    'processed_standpoint':standpoint_approve_processed_columns,
+    'originate_standpoint':standpoint_approve_originate_columns,
 }
 const tabMap = {
     'pending':1,
@@ -257,28 +258,49 @@ export default {
             isDetailDialogShow: false,
         };
     },
-    methods: {
-        handleReportClassifyId(){
-            const ids = {
-                ClassifyFirstId:0,
-                ClassifySecondId:0,
-                ClassifyThirdld:0,
-            }
-            if(this.classify.length === 2){
-                ids.ClassifyFirstId = this.classify[this.classify.length-1]||0;
-                ids.ClassifySecondId = 0;
-                ids.ClassifyThirdld = 0;
-            } else if(this.classify.length === 3){
-                ids.ClassifyFirstId = this.classify[this.classify.length-2]||0
-                ids.ClassifySecondId = this.classify[this.classify.length-1]||0
-                ids.ClassifyThirdld = 0;
-            } else {  //分类最多只有三级
-                ids.ClassifyFirstId = this.classify.length > 1 ? this.classify[this.classify.length-3]||0 : 0;
-                ids.ClassifySecondId = this.classify.length > 1 ? this.classify[this.classify.length-2]||0 : 0;
-                ids.ClassifyThirdld = this.classify.length > 1 ? this.classify[this.classify.length-1]||0 : 0;
-            }
+    computed:{ 
+        isShowApprove(){
+          const auths = {
+            bi:'reportApprove_approve',
+            standpoint:'standpointApprove_approve',
+          };
+          return Object.keys(auths).includes(this.activeMainTab) ? this.isShowBtn(auths[this.activeMainTab]) : true
+        },
+        isShowDetail(){
+          const auths = {
+            bi:'reportApprove_detail',
+            standpoint:'standpointApprove_detail',
+          };
+          return Object.keys(auths).includes(this.activeMainTab) ? this.isShowBtn(auths[this.activeMainTab]) : true
+        },
 
-            return ids
+        searchPhLabel() {
+            const phLabel = {
+                'edb': '指标Id/名称',
+                'chart': '图表名称',
+                'bi': this.$t('AprrovalPage.enter_Kanban_name_tip'),
+                'standpoint':'请输入标题'
+            }
+            return phLabel[this.activeMainTab] && phLabel[this.activeMainTab];
+        },
+        
+    },
+    methods: {
+        isShowRepeal(row){
+          const auths = {
+            bi:'reportApprove_repeal',
+            standpoint:'standpointApprove_cancel',
+          };
+          const valid = Object.keys(auths).includes(this.activeMainTab) ? this.isShowBtn(auths[this.activeMainTab]) : true;
+          return ((row.State !==4 && ['bi','standpoint'].includes(this.activeMainTab)) || [2,4].includes(this.activeMainTab)) && valid
+        },
+        isShowRejectReason(row){
+          const auths = {
+            bi:'reportApprove_rejectreason',
+            standpoint:'standpointApprove_rejectReason',
+          };
+          const valid = Object.keys(auths).includes(this.activeMainTab) ? this.isShowBtn(auths[this.activeMainTab]) : true;
+          return row.State===3 && valid;
         },
         async getTableData(){
             this.tableLoading = true
@@ -290,7 +312,7 @@ export default {
                 Keyword:this.keyword,
             }
             const biApproveParams = {
-                ClassifyId:this.classify[0] || 0,
+                ClassifyId:this.classify[this.classify.length - 1] || 0,
                 TimeType:this.timeType,
                 StartTime:this.timeDate?this.timeDate[0]||'':'',
                 EndTime:this.timeDate?this.timeDate[1]||'':'',
@@ -299,12 +321,13 @@ export default {
                 ApproveState:this.ApproveState,
             }
             let res = null;
-            if(this.activeMainTab === 'bi'){
-                res = await approveInterence.getBiApproveList({
+            if(['bi','standpoint'].includes(this.activeMainTab)){
+                let requestApi = this.activeMainTab == 'bi' ? approveInterence.getBiApproveList : approveInterence.getKnowledgeApproveList;
+                res = await requestApi({
                     ...baseParams,
                     ...biApproveParams,
                 })
-                  
+
             }else { //指标图表list
                 res = await approveInterence.getPublicApproveList({
                     ...baseParams,
@@ -347,7 +370,9 @@ export default {
           this.classify = '';
           this.keyword = '';
           this.activeTab = 'pending';
-          ['edb','chart'].includes(tabName) ? this.getClassifyOptions() : this.getBIClassifyTree();
+          this.activeMainTab == 'bi' && this.getBIClassifyTree();
+          this.activeMainTab == 'standpoint' && this.getStandpointClassifyTree();
+          ['edb','chart'].includes(tabName) && this.getClassifyOptions();
           this.handleClick()
         },
         handleClick() {
@@ -365,20 +390,26 @@ export default {
             this.isDetailDialogShow = true;
         },
         toApproveDetail(data,type){ 
+            const ids = {
+                bi:'BiApproveId',
+                standpoint:'KnowledgeResourceApproveId',
+            }
             this.$router.push({
                 path:'/approveDetail',
                 query:{
                     mainType:this.activeMainTab,
                     type,
-                    approveId:this.activeMainTab == 'bi' ? data.BiApproveId : data.DataApproveId,
+                    approveId:Object.keys(ids).includes(this.activeMainTab) ? data[ids[this.activeMainTab]] : data.DataApproveId,
                 }
             })
         },
         cancelApprove(item){ 
-            let req = this.activeMainTab === 'bi' 
-                ? approveInterence.cancelBiApprove({BiApproveId:Number(item.BiApproveId)})
-                : approveInterence.cancelPublicApprove({ DataApproveId: item.DataApproveId })
-
+            const reqs = {
+                bi:{fn:approveInterence.cancelBiApprove,params:{BiApproveId:Number(item.BiApproveId)}},
+                standpoint:{fn:approveInterence.cancelKnowledgeApprove,params:{KnowledgeResourceApproveId:item.KnowledgeResourceApproveId}},
+            }
+            let req = Object.keys(reqs).includes(this.activeMainTab) ? reqs[this.activeMainTab].fn(reqs[this.activeMainTab].params)
+                      : approveInterence.cancelPublicApprove({ DataApproveId: item.DataApproveId })
             req.then(res=>{
                 if(res.Ret!==200) return 
                 this.$message.success(this.$t('AprrovalPage.revoke_success') )
@@ -406,9 +437,15 @@ export default {
                 label:this.$t('SystemManage.BaseConfig.bIDashboard_approval'),
                 name:'bi'  
             });
+
+            this.mainTabs.push({
+                label:'观点审批',
+                name:'standpoint'  
+            });
+
            this.activeMainTab = this.mainTabs.length > 0 ? this.mainTabs[0].name : '';
            if(!this.mainTabs.length) return;
-           const {formType='approve',mainType='report'} = this.$route.query
+           const {formType='approve',mainType} = this.$route.query
 
            if(mainType) {
                 let valid = this.mainTabs.find(_ => mainType == _.name);
@@ -423,10 +460,15 @@ export default {
            }
            this.activeTab = formTypeMap[formType]||'pending'
            this.tableColumns = ['edb','chart'].includes(this.activeMainTab) ? this.edbTableColumns : columnsMap[`${this.activeTab}_${this.activeMainTab}`];
-
+           this.activeMainTab == 'bi' && this.getBIClassifyTree();
+           this.activeMainTab == 'standpoint' && this.getStandpointClassifyTree();
            ['edb','chart'].includes(this.activeMainTab) && this.getClassifyOptions()
            this.getTableData();
         },
+        isShowBtn(code){
+            const {approvePermission,checkPermissionBtn}=this.permissionBtn;
+            return checkPermissionBtn(approvePermission[code])
+        },
     },
     mounted(){
     },

+ 51 - 75
src/views/approve_manage/approveSetting.vue

@@ -94,17 +94,17 @@
         </template>
 
         <!-- bi审批 -->
-        <template v-else-if="activeMainTab==='bi'">
+        <template v-else-if="['bi','standpoint'].includes(activeMainTab)">
             <div class="head-box">
                 <el-input v-model="Keyword" @input="handleCurrentChange(1)"
                     :placeholder="$t('SystemManage.ReportApprove.placeholder02')" prefix-icon="el-icon-search" clearable style="width:360px;"></el-input>
                 <el-cascader v-model="classify"
-                    :placeholder="activeMainTab == 'report' ? $t('SystemManage.ReportApprove.placeholder01') : $t('AprrovalPage.select_associated_Kanban_tip')" clearable
-                    :options="activeMainTab == 'report' ? classifyTree : biClassifyTree"
-                    :props="activeMainTab == 'report' ? {value:'ClassifyId',label:'ClassifyName',children:'Children'} : {value:'BiDashboardClassifyId',label:'BiDashboardClassifyName',children:'Children'}"
+                    :placeholder="activeMainTab == 'bi' ? $t('AprrovalPage.select_associated_Kanban_tip') : '请选择关联分类'" clearable
+                    :options="activeMainTab == 'bi' ? biClassifyTree : standpointTree"
+                    :props="activeMainTab == 'bi' ?  {value:'BiDashboardClassifyId',label:'BiDashboardClassifyName',children:'Children'} : {value:'ClassifyId',label:'ClassifyName',children:'Child'}"
                     @change="handleSearchChange"
                     style="margin-right: auto;margin-left: 25px;width: 240px;"></el-cascader>
-                <el-button v-permission="permissionBtn.approveFlowPermission.reportApprove_add"
+                <el-button  v-if="isShowAddFlow"
                     type="primary" @click="handleAddFlow">{{$t('SystemManage.ReportApprove.add_btn')}}</el-button>
                 
             </div>
@@ -120,9 +120,9 @@
                     ></el-table-column>
                     <el-table-column :label="$t('Table.column_operations')" align="center">
                         <template slot-scope="{row}">
-                            <el-button v-permission="permissionBtn.approveFlowPermission.reportApprove_edit"
+                            <el-button  v-if="isShowEdit"
                                 type="text" style="padding:0;" @click="handleEditFlow(row)">{{$t('Table.edit_btn')}}</el-button>
-                            <el-button v-permission="permissionBtn.approveFlowPermission.reportApprove_remove"
+                            <el-button  v-if="isShowDelete"
                                 type="text" style="padding:0;color:red;" @click="handleDeleteFlow(row)">{{$t('Table.delete_btn')}}</el-button>
                         </template>
                         
@@ -157,21 +157,11 @@ export default {
     mixins:[approveMixins,reportApproveConfig],
     computed:{
         tableColumns(){
-            return this.activeMainTab == 'report' ? [{
+            return [{
                 label:this.$t('SystemManage.ReportApprove.table_col01'),
                 key:'FlowName'
             },{
-                label:this.$t('SystemManage.ReportApprove.table_col02'),
-                key:'ReportClassify'
-            },{
-                label:this.$t('SystemManage.ReportApprove.table_col03'),
-                key:'CreateTime',
-                sortable:'custom'
-            }] : [{
-                label:this.$t('SystemManage.ReportApprove.table_col01'),
-                key:'FlowName'
-            },{
-                label:this.$t('AprrovalPage.association_kanban'),
+                label:this.activeMainTab == 'bi' ? this.$t('AprrovalPage.association_kanban') : '关联分类',
                 key:'ClassifyName'
             },{
                 label:this.$t('SystemManage.ReportApprove.table_col03'),
@@ -179,6 +169,19 @@ export default {
                 sortable:'custom'
             }]
         },
+        isShowAddFlow(){
+            const auths = { bi:'reportApprove_add', standpoint:'standpointList_add' }
+            return this.isShowBtn(auths[this.activeMainTab] || 'reportApprove_add');
+        },
+        isShowEdit(){
+            const auths = { bi:'reportApprove_edit', standpoint:'standpointList_edit' }
+            return this.isShowBtn(auths[this.activeMainTab] || 'reportApprove_edit');
+        },
+        isShowDelete(){
+            const auths = { bi:'reportApprove_remove', standpoint:'standpointList_delete' }
+            return this.isShowBtn(auths[this.activeMainTab] || 'reportApprove_remove');
+        },
+        
     },
     data() {
         return {
@@ -230,7 +233,8 @@ export default {
           this.ClassifyId = 0;
           this.$refs.reftable&&this.$refs.reftable.clearSort();
           tabName == 'bi' && this.getBIClassifyTree();
-          tabName == 'bi' && this.getTableData();
+          tabName == 'standpoint' && this.getStandpointClassifyTree();
+          ['bi','standpoint'].includes(this.activeMainTab) && this.getTableData();
           
             this.approveForm = {
                 approveUsers:[],
@@ -240,76 +244,37 @@ export default {
             this.selectApproveUsers = [];
             this.selectNoApproveUsers = [];
             ['edb','chart'].includes(this.activeMainTab) && this.getApproveDetail();
+
         },
         handleCurrentChange(page){
             this.page = page
             this.getTableData()
         },
         handleSearchChange(){
-            if(this.activeMainTab == 'report'){
-                this.ReportType = this.classify[0]||0
-                this.handleReportClassifyId()
-            } else {
-                this.ClassifyId = this.classify[0] || 0;
-            }
+            this.ClassifyId = this.classify[this.classify.length - 1] || 0;
             this.handleCurrentChange(1)
         },
-        handleReportClassifyId(){
-            if(this.classify.length === 2){
-                this.ClassifyFirstId = this.classify[this.classify.length-1]||0;
-                this.ClassifySecondId = 0;
-                this.ClassifyThirdld = 0;
-            } else if(this.classify.length === 3){
-                this.ClassifyFirstId = this.classify[this.classify.length-2]||0
-                this.ClassifySecondId = this.classify[this.classify.length-1]||0
-                this.ClassifyThirdld = 0;
-            } else {  //分类最多只有三级
-                this.ClassifyFirstId = this.classify.length > 1 ? this.classify[this.classify.length-3]||0 : 0;
-                this.ClassifySecondId = this.classify.length > 1 ? this.classify[this.classify.length-2]||0 : 0;
-                this.ClassifyThirdld = this.classify.length > 1 ? this.classify[this.classify.length-1]||0 : 0;
-            }
-        },
         sortChange({prop,order}){
             this.SortRule = order==='ascending'?1:2
             if(!order) this.SortRule = 0;
             this.handleCurrentChange(1)
         },
-        getTableData(){
+        async getTableData(){
             let params = {
                 PageSize:this.pageSize,
                 CurrentIndex:this.page,
                 Keyword:this.Keyword,
                 SortRule:this.SortRule,
+                ClassifyId:this.ClassifyId,
             }
             this.dataLoading = true;
-            if(this.activeMainTab == 'report'){
-                approveInterence.getApproveFlowList({
-                    ...params,
-                    ReportType:this.ReportType,
-                    ClassifyFirstId:this.ClassifyFirstId,
-                    ClassifySecondId:this.ClassifySecondId,
-                    ClassifyThirdld:this.ClassifyThirdld,
-                }).then(res=>{
-                    if(res.Ret!==200) return 
-                    const {List=[],Paging={}} = res.Data||{}
-                    this.tableData = List||[]
-                    this.total = Paging.Totals||0;
-                    this.dataLoading = false;
-                }).catch(err=>{this.dataLoading = false;})
-            }
-            if(this.activeMainTab == 'bi'){
-                approveInterence.getBiApproveFlowList({
-                    ...params,
-                    ClassifyId:this.ClassifyId
-                }).then(res=>{
-                    if(res.Ret != 200) return;
-                    const {List=[],Paging={}} = res.Data||{}
-                    this.tableData = List||[]
-                    this.total = Paging.Totals||0;
-                    this.dataLoading = false;
-                }).catch(err=>{this.dataLoading = false;})
-            } 
-            
+            let requestApi = this.activeMainTab == 'bi' ? approveInterence.getBiApproveFlowList : approveInterence.getKnowledgeApproveFlowList;
+            let res = await requestApi(params);
+            this.dataLoading = false;
+            if(res.Ret != 200) return;
+            const {List=[],Paging={}} = res.Data||{}
+            this.tableData = List||[]
+            this.total = Paging.Totals||0;
         },
         handleAddFlow(){
             this.$router.push({
@@ -324,7 +289,7 @@ export default {
                 path:'/approveEdit',
                 query:{
                     mainType:this.activeMainTab,
-                    flowId:this.activeMainTab == 'report' ? item.ReportApproveFlowId :  item.BiApproveFlowId,
+                    flowId:this.activeMainTab == 'bi' ? item.BiApproveFlowId : item.KnowledgeResourceApproveFlowId,
                 }
             })
         },
@@ -332,9 +297,9 @@ export default {
             this.$confirm(this.$t('MsgPrompt.delete_info_msg'),this.$t('Confirm.prompt'),{
                 type:"warning"
             }).then(async ()=>{
-                let res = this.activeMainTab == 'report' 
-                          ? await approveInterence.deleteApproveFlow({ReportApproveFlowId:item.ReportApproveFlowId})
-                          : await approveInterence.deleteBiApproveFlow({BiApproveFlowId:item.BiApproveFlowId});
+                let res = this.activeMainTab == 'bi' 
+                          ? await approveInterence.deleteBiApproveFlow({BiApproveFlowId:item.BiApproveFlowId})
+                          : await approveInterence.deleteKnowledgeApproveFlow({KnowledgeResourceApproveFlowId:item.KnowledgeResourceApproveFlowId});
                 if(res.Ret!==200) return 
                 this.$message.success(this.$t('MsgPrompt.delete_msg'))
                 this.handleCurrentChange(1)
@@ -351,6 +316,12 @@ export default {
                     name:'bi'  
                 });
 
+            if(this.isShowBtn('standpointList_list'))
+                this.mainTabs.push({
+                    label:'观点审批',
+                    name:'standpoint'  
+                });
+            
            this.activeMainTab = this.mainTabs.length > 0 ? this.mainTabs[0].name : '';
            if(!this.mainTabs.length) return;
            
@@ -359,9 +330,13 @@ export default {
                 this.activeMainTab = valid ? valid.name : this.mainTabs[0].name;
            }
 
-           this.IsBIApprove && this.getTableData();
+           ['bi','standpoint'].includes(this.activeMainTab) && this.getTableData();
             ['edb','chart'].includes(this.activeMainTab) && this.getApproveDetail();
         },
+        isShowBtn(code){
+            const {approveFlowPermission,checkPermissionBtn}=this.permissionBtn;
+            return checkPermissionBtn(approveFlowPermission[code])
+        },
 
         /* 获取用户列表 */
         async getUserList() {
@@ -477,6 +452,7 @@ export default {
     },
     mounted(){
         this.getBIClassifyTree();
+        this.getStandpointClassifyTree();
     },
 };
 </script>

+ 65 - 0
src/views/approve_manage/config/tableConfig.js

@@ -38,6 +38,26 @@ export const biapprove_pending_columns = [
         label:'审批状态',
     }
 ]
+//审批管理-待处理_观点库审批
+export const standponit_approve_pending_columns = [
+    {
+        key:'KnowledgeResourceTitle',
+        label:'观点标题'
+    },{
+        key:'ClassifyName',
+        label:'关联分类'
+    },{
+        key:'ApplyUserName',
+        label:'提交人'
+    },{
+        key:'CreateTime',
+        label:'提交时间',
+        sortable:'custom'
+    },{
+        key:'RecordState',
+        label:'审批状态',
+    }
+]
 export const appreve_pending_status = [
     {
         type:1,
@@ -92,6 +112,30 @@ export const biapprove_processed_columns=[
         label:'处理状态',
     }
 ]
+//审批管理-已处理-观点库审批
+export const standpoint_approve_processed_columns=[
+    {
+        key:'KnowledgeResourceTitle',
+        label:'观点标题'
+    },{
+        key:'ClassifyName',
+        label:'关联分类'
+    },{
+        key:'ApplyUserName',
+        label:'提交人'
+    },{
+        key:'CreateTime',
+        label:'提交时间',
+        sortable:'custom'
+    },{
+        key:'HandleTime',
+        label:'处理时间',
+        sortable:'custom'
+    },{
+        key:'RecordState',
+        label:'处理状态',
+    }
+]
 export const approve_processed_status = [
     {
         type:1,
@@ -143,6 +187,27 @@ export const biapprove_originate_columns=[
         label:'审批状态',
     }
 ]
+//审批管理-我发起的-观点库审批
+export const standpoint_approve_originate_columns=[
+    {
+        key:'KnowledgeResourceTitle',
+        label:'观点标题'
+    },{
+        key:'ClassifyName',
+        label:'关联分类'
+    },{
+        key:'CreateTime',
+        label:'提交时间',
+        sortable:'custom'
+    },{
+        key:'ApproveTime',
+        label:'审批时间',
+        sortable:'custom'
+    },{
+        key:'State',
+        label:'审批状态',
+    }
+]
 export const approve_originate_status=[
     {
         type:1,

+ 9 - 2
src/views/approve_manage/mixins/approveMixins.js

@@ -17,7 +17,8 @@ export default{
         return {
             classifyTree:[],
             biClassifyTree:[],
-            classifyOptions: []
+            classifyOptions: [],
+            standpointTree:[],
         }
     },
     methods:{
@@ -48,6 +49,12 @@ export default{
     
             this.classifyOptions = res.Data.AllNodes || [];
             filterNodes(this.classifyOptions,false)
-        }
+        },
+        getStandpointClassifyTree(){
+            approveInterence.getKnowledgeApproveClassifyTree().then(res=>{
+                if(res.Ret != 200) return;
+                this.standpointTree = res.Data
+            })
+        },
     }
 }

+ 6 - 2
src/views/knowledge_manage/components/eventPreview.vue

@@ -21,11 +21,15 @@ export default {
   props: {
     eventDetail: {
       type: Object
-    }
+    },
+    file:{
+      type:String,
+      default:''
+    },
   },
   computed: {
     fileUrl() {
-      return this.eventDetail.FileUrl.endsWith('.pdf') ? this.eventDetail.FileUrl : `https://view.officeapps.live.com/op/view.aspx?src=${this.eventDetail.FileUrl}`
+      return this.file.endsWith('.pdf') ? this.file : `https://view.officeapps.live.com/op/view.aspx?src=${this.file}`
     }
   },
   data() {

+ 1 - 0
src/views/knowledge_manage/components/importExcelDia.vue

@@ -91,6 +91,7 @@ export default {
         '/knowledge_policy': require('@/assets/img/knowledge/tem_2.png'),
         '/knowledge_viewpoint': require('@/assets/img/knowledge/tem_3.png'),
         '/knowledge_know': require('@/assets/img/knowledge/tem_4.png'),
+        '/knowledge_standpoint': require('@/assets/img/knowledge/tem_3.png'),
       }
 
       return imgSourceMap[this.$route.path] && imgSourceMap[this.$route.path]

+ 5 - 5
src/views/knowledge_manage/components/importFileDia.vue

@@ -69,17 +69,17 @@
             v-model="eventForm.startTime"
             :value-format="formatTime"
             :format="formatTime"
-            :type="[2,3].includes(ResourceType)?'date':'datetime'"
+            :type="[2,3,4].includes(ResourceType)?'date':'datetime'"
             placeholder="请选择开始时间"
             style="width:80%"
           />
         </el-form-item>
-        <el-form-item prop="endTime" v-if="![2,3].includes(ResourceType)" label="结束时间">
+        <el-form-item prop="endTime" v-if="![2,3,4].includes(ResourceType)" label="结束时间">
           <el-date-picker
             v-model="eventForm.endTime"
             :value-format="formatTime"
             :format="formatTime"
-            :type="[2,3].includes(ResourceType)?'date':'datetime'"
+            :type="[2,3,4].includes(ResourceType)?'date':'datetime'"
             placeholder="请选择结束时间"
             style="width:80%"
           />
@@ -111,7 +111,7 @@ export default {
   },
   computed: {
     formatTime() {
-      return [2,3].includes(this.ResourceType) ? 'yyyy-MM-dd' : 'yyyy-MM-dd HH:mm:ss'
+      return [2,3,4].includes(this.ResourceType) ? 'yyyy-MM-dd' : 'yyyy-MM-dd HH:mm:ss'
     }
   },
   watch: {
@@ -202,7 +202,7 @@ export default {
         TagId: tagId || 0,
         StartTime: startTime,
         EndTime: endTime || '',
-        FileUrl: this.importFileUrl
+        FileUrl: this.importFileUrl ? [this.importFileUrl] : [],
       }
       const res = await eventInterface.addEvent(params)
 

+ 1 - 1
src/views/knowledge_manage/components/importMoreFileDia.vue

@@ -255,7 +255,7 @@ export default {
                 TagId: el.tagId || 0,
                 StartTime: el.startTime,
                 EndTime: el.endTime || '',
-                FileUrl: res[index].Data.FileUrl
+                FileUrl: res[index].Data.FileUrl ? [res[index].Data.FileUrl] : [],
               })
             })
             downloadHint.close()

+ 50 - 14
src/views/knowledge_manage/edit.vue

@@ -55,29 +55,29 @@
           </el-select>
         </el-form-item>
         <el-form-item prop="startTime">
-          <label>开始时间</label>
+          <label>{{ [2,3,4].includes(ResourceType) ? '发布时间' : '开始时间' }}</label>
           <el-date-picker
             v-model="eventForm.startTime"
             :value-format="formatTime"
             :format="formatTime"
-            :type="[2,3].includes(ResourceType)?'date':'datetime'"
-            placeholder="请选择开始时间"
+            :type="[2,3,4].includes(ResourceType)?'date':'datetime'"
+            :placeholder="[2,3,4].includes(ResourceType) ? '请选择发布时间' : '请选择开始时间'"
           />
         </el-form-item>
-        <el-form-item prop="endTime" v-if="![2,3].includes(ResourceType)">
+        <el-form-item prop="endTime" v-if="![2,3,4].includes(ResourceType)">
           <label>结束时间</label>
           <el-date-picker
             v-model="eventForm.endTime"
             :value-format="formatTime"
             :format="formatTime"
-            :type="[2,3].includes(ResourceType)?'date':'datetime'"
+            :type="[2,3,4].includes(ResourceType)?'date':'datetime'"
             placeholder="请选择结束时间"
           />
         </el-form-item>
 
       </el-form>
 
-      <el-button type="primary" @click="handleEdit" v-if="!isEdit&&permissionBtn.isShowBtn('knowledgePermission','know_edit')">编辑</el-button>
+      <el-button type="primary" @click="handleEdit" v-if="!isEdit&&getEditAuth">编辑</el-button>
     </header>
     <div class="main">
       <!-- 编辑 -->
@@ -94,8 +94,20 @@
 
       <!-- 详情 -->
       <template v-if="!isEdit || (eventDetail&&eventDetail.IsFile)">
+
+        <div v-if="eventDetail && eventDetail.FileUrl && eventDetail.FileUrl.length > 0" style="margin-top: -20px;">
+          <el-tabs v-model="fileUrl">
+            <el-tab-pane 
+            v-for="(item,index) in eventDetail.FileUrl" 
+            :key="index+1" 
+            :label="`文件${index+1}`" 
+            :name="item"></el-tab-pane>
+          </el-tabs>
+        </div>
+
         <eventPreview
           :eventDetail="eventDetail||{}"
+          :file="fileUrl"
         />
 
         <div class="btn-bottom" v-if="isEdit&&eventDetail.IsFile">
@@ -114,7 +126,7 @@ export default {
   components: { editor,eventPreview },
   computed: {
     isEdit() {
-      return this.$route.path==='/knowledgeEdit'
+      return this.$route.path==='/knowledgeEdit' || this.$route.path==='/knowledgeAdd'
     },
     currentPath() {
       const pathMap = {
@@ -122,13 +134,27 @@ export default {
         1:'/knowledge_policy',
         2:'/knowledge_viewpoint',
         3:'/knowledge_know',
+        4:'/knowledge_standpoint'
       }
 
       return pathMap[this.ResourceType] && pathMap[this.ResourceType]
     },
     formatTime() {
-      return [2,3].includes(this.ResourceType) ? 'yyyy-MM-dd' : 'yyyy-MM-dd HH:mm:ss'
-    }
+      return [2,3,4].includes(this.ResourceType) ? 'yyyy-MM-dd' : 'yyyy-MM-dd HH:mm:ss'
+    },
+    getEditAuth(){
+      if(this.ResourceType != 4){
+        const auths = {
+          0:'event_edit',
+          1:'policy_edit',
+          2:'viewpoint_edit',
+          3:'know_edit',
+        }
+        return this.permissionBtn.isShowBtn('knowledgePermission',auths[this.ResourceType]) 
+      } else {
+        return this.permissionBtn.isShowBtn('knowledgePermission',this.$route.query.pointType == 'my' ? 'standpoint_my_edit' : 'standpoint_public_edit')
+      }
+    },
   },
   data() {
     return {
@@ -154,13 +180,14 @@ export default {
           { required: true, message: '来源不能为空', trigger: 'blur' },
         ],
         startTime:[
-          { required: true, message: '开始时间不能为空', trigger: 'blur' },
+          { required: true, message: '时间不能为空', trigger: 'blur' },
         ],
       },
       
       classifyOptions:[],
       sourcesOptions:[],
       tagsOptions:[],
+      fileUrl:'',
     }
   },
   beforeRouteEnter(to,from,next) {
@@ -171,6 +198,7 @@ export default {
         1: { name: '政策库',path:'knowledge_policy' },
         2: { name: '报告库',path:'knowledge_viewpoint' },
         3: { name: '知识库',path:'knowledge_know' },
+        4: { name: '观点库',path:'knowledge_standpoint' },
       }
       to.meta.pathFrom=pathMap[to.query.source].path;
       to.meta.pathName=pathMap[to.query.source].name;
@@ -221,12 +249,15 @@ export default {
       this.eventDetail = {
         ...res.Data,
         StartTime: res.Data.StartTime 
-          ? this.$moment(res.Data.StartTime).format([2,3].includes(this.ResourceType)?'YYYY-MM-DD':'YYYY-MM-DD HH:mm:ss') 
+          ? this.$moment(res.Data.StartTime).format([2,3,4].includes(this.ResourceType)?'YYYY-MM-DD':'YYYY-MM-DD HH:mm:ss') 
           : '',
         EndTime:res.Data.EndTime 
-          ? this.$moment(res.Data.EndTime).format([2,3].includes(this.ResourceType)?'YYYY-MM-DD':'YYYY-MM-DD HH:mm:ss') 
+          ? this.$moment(res.Data.EndTime).format([2,3,4].includes(this.ResourceType)?'YYYY-MM-DD':'YYYY-MM-DD HH:mm:ss') 
           : '',
       };
+      if(this.eventDetail && this.eventDetail.FileUrl && this.eventDetail.FileUrl.length > 0){
+         this.fileUrl = this.eventDetail.FileUrl[0];
+      }
       this.eventForm = {
         title: this.eventDetail.Title,
         classifyId: this.eventDetail.ClassifyId,
@@ -235,7 +266,7 @@ export default {
         startTime: this.eventDetail.StartTime,
         endTime:this.eventDetail.EndTime
       }
-      
+      await this.$nextTick();
       this.$refs.editorRef&&this.$refs.editorRef.initData(this.eventDetail.Content)
     },
 
@@ -258,7 +289,7 @@ export default {
         TagId: tagId || 0,
         StartTime: startTime,
         EndTime: endTime || '',
-        FileUrl: this.eventDetail?this.eventDetail.FileUrl:''
+        FileUrl: this.eventDetail&&this.eventDetail.FileUrl?this.eventDetail.FileUrl:[]
       }
       const res = this.id
         ? await eventInterface.editEvent({
@@ -337,5 +368,10 @@ export default {
     #froala-editor-documentContent {
       display: none !important;
     }
+    .el-tabs__item{
+      height: 48px;
+      line-height: 48px;
+      letter-spacing: 1px;
+    }
   }
 </style>

+ 162 - 19
src/views/knowledge_manage/list.vue

@@ -4,14 +4,25 @@
         <div class="left-filter">
           <el-button 
             type="primary" 
-            @click="$router.push({path:'/knowledgeEdit',query: { source: ResourceType }})"
-            v-if="checkBtnAuth('add')"
+            @click="$router.push({path:'/knowledgeAdd',query: { source: ResourceType }})"
+            v-if="checkBtnAuth('add') && ResourceType != 2"
           >添加{{ titlePath }}</el-button>
+
+          <el-button 
+            type="primary" 
+            @click="isImportExcelDia=true"
+            v-if="checkBtnAuth('import') && ResourceType == 4"
+          >Excel导入</el-button>
+          <el-button 
+            type="primary" 
+            @click="handleImport"
+            v-if="checkBtnAuth('import') && ResourceType == 2"
+          >文件上传</el-button>
           <el-dropdown 
             split-button
             type="primary" 
             @click="isImportExcelDia=true"
-            v-if="checkBtnAuth('import')"
+            v-if="checkBtnAuth('import') && [0,1,3].includes(ResourceType)"
             @command="handleImport"
           >
             Excel导入
@@ -121,6 +132,24 @@
                           />
                       </el-select>
                   </div>
+                  <div v-if="ResourceType == 4 && standpointActiveType=='my'" class="select-item">
+                      <el-select
+                          v-model="filterForm.states"
+                          placeholder="请选择状态"
+                          size="medium"
+                          clearable
+                          style="width:100%;"
+                          multiple
+                          @change="filterChange"
+                      >
+                          <el-option 
+                            v-for="item in stateOptions" 
+                            :key="item.state"
+                            :label="item.label" 
+                            :value="item.state" 
+                          />
+                      </el-select>
+                  </div>
               </div>
               <div class="select-btn" slot="reference">
                   <img src="~@/assets/icons/filter.svg">
@@ -141,10 +170,23 @@
       </header>
 
       <div class="main">
+        <el-radio-group 
+          v-if="ResourceType == 4 && standpointTypes.length > 0" 
+          v-model="standpointActiveType" 
+          style="margin:30px 0 0 0;"
+          @change="tabChange">
+            <el-radio-button 
+            v-for="item in standpointTypes"
+            :key="item.type"
+            :label="item.type">{{ item.label }}</el-radio-button>
+        </el-radio-group>
+
         <el-table
           :data="tableData"
           style="box-shadow: 0px 3px 6px rgba(155, 170, 219, 0.2);margin-top: 20px"
           border
+          v-loading="dataLoading"
+          @sort-change="sortChange"
           ref="table"
         >
           <el-table-column
@@ -153,10 +195,12 @@
             :label="item.label"
             :width="item.widthsty"
             :min-width="item.minwidthsty"
+            :sortable="item.sortable"
             align="center"
           >
             <template slot-scope="{row}">
               <span v-if="item.key==='Title'" class="editsty" @click="lookDetailHandle(row,'look')">{{row[item.key]}}</span>
+              <span v-else-if="item.key==='State'">{{stateTypes[row[item.key]]}}</span>
               <span v-else>{{row[item.key]}}</span>
             </template>
           </el-table-column>
@@ -166,10 +210,15 @@
             align="center"
           >
             <template slot-scope="{row}">
-              <div>
-                <span class="editsty" @click="lookDetailHandle(row,'edit')" v-if="checkBtnAuth('edit')">{{$t('Table.edit_btn')}}</span>
-
-                <span class="deletesty" @click="handleDelItem(row)" v-if="checkBtnAuth('del')">{{$t('Table.delete_btn')}}</span>
+              <div v-if="!(ResourceType == 4 && standpointActiveType == 'my' && row.OutSource == 1)">
+                <span 
+                v-if="ResourceType == 4 && standpointActiveType == 'my' && checkBtnAuth('my_setpublic') && (row.State == 0 || row.State == 3)"
+                class="editsty" @click="setPublic(row)">设置公共</span>
+                <span class="editsty" @click="lookDetailHandle(row,'edit')" v-if="isShowEdit(row)">{{$t('Table.edit_btn')}}</span>
+                <span 
+                v-if="ResourceType == 4 && standpointActiveType == 'my' && checkBtnAuth('my_back') && (row.State == 2 || row.State == 4)"
+                class="editsty" @click="handleApproveBack(row)">撤销</span>
+                <span class="deletesty" @click="handleDelItem(row)" v-if="isShowDelete(row)">{{$t('Table.delete_btn')}}</span>
               </div>
             </template>
           </el-table-column>
@@ -228,6 +277,12 @@ import importExcelDia from './components/importExcelDia.vue';
 import importFileDia from './components/importFileDia.vue';
 import importMoreFileDia from './components/importMoreFileDia.vue';
 import mPage from '@/components/mPage.vue'
+const stateOptions = [
+  {state:0,label:'待提交'},
+  {state:2,label:'待审核'},
+  {state:3,label:'已驳回'},
+  {state:4,label:'已通过'}
+]
 export default {
   components: { mPage,classifyDia,importExcelDia,importFileDia,importMoreFileDia },
   computed: {
@@ -237,6 +292,7 @@ export default {
         '/knowledge_policy': 1,
         '/knowledge_viewpoint': 2,
         '/knowledge_know': 3,
+        '/knowledge_standpoint':4,
       }
 
       return apiMap[this.$route.path] && apiMap[this.$route.path]
@@ -245,21 +301,32 @@ export default {
       const titleMap = {
         '/knowledge_event': '事件',
         '/knowledge_policy': '政策',
-        '/knowledge_viewpoint': '观点',
+        '/knowledge_viewpoint': '报告',
         '/knowledge_know': '知识',
+        '/knowledge_standpoint':'观点',
       }
 
       return titleMap[this.$route.path] && titleMap[this.$route.path]
     },
     tableColums() {
       return [
-        { label: [2,3].includes(this.ResourceType)?'时间':'开始时间',key: 'StartTime' },
+        { label: [2,3,4].includes(this.ResourceType)?'发布时间':'开始时间',key: 'StartTime',sortable:'custom' },
         { label: '标题',key: 'Title',minwidthsty:'150px' },
         { label: '来源',key: 'SourceFrom' },
         { label: '分类',key: 'ClassifyFullName' },
         { label: '标签',key: 'TagName' },
-        { label: '添加人',key: 'AdminRealName' },
-      ]
+        { label: this.ResourceType == 4 && this.standpointActiveType == 'my' ? '状态' :'添加人',
+          key: this.ResourceType == 4 && this.standpointActiveType == 'my' ? 'State' :'AdminRealName' },
+      ] 
+    },
+    stateTypes() {
+       return {
+        0:'待提交',
+        1:'',
+        2:'待审核',
+        3:'已驳回',
+        4:'已通过'
+       }
     },
 
     selectNum() {
@@ -269,6 +336,7 @@ export default {
       this.filterForm.sources.length && num++;
       this.filterForm.tags.length && num++;
       this.filterForm.users.length && num++;
+      if(this.ResourceType == 4 && this.standpointActiveType=='my') this.filterForm.states.length && num++;
 
       return num
     }
@@ -283,6 +351,8 @@ export default {
         tags: [],
         users: [],
         keyWord:"",
+        states:[],
+        publishSort:'',
       },
       classifyOptions:[],
       sourcesOptions:[],
@@ -311,11 +381,15 @@ export default {
       fileList:[],
 
       // 解决再次上传相同文件无响应
-      useMore:true
+      useMore:true,
+      standpointTypes:[],
+      standpointActiveType:'my', //my public
+      dataLoading:false,
+      stateOptions,
     }
   },
   mounted(){
-    if(!this.checkBtnAuth('view')) 
+    if(!this.handleViewAuth()) 
     return this.$message.warning('您当前暂无查看数据权限,如需查看,请联系管理员');
     this.getClassifyOptions();
     this.getSourceOptions();
@@ -324,6 +398,52 @@ export default {
     this.getTableData()
   },
   methods:{
+    handleViewAuth(){
+      let valid = true;
+      if(this.ResourceType == 4){
+        let myValid = this.checkBtnAuth('my_view');
+        let publicValid =  this.checkBtnAuth('public_view');
+        if(!myValid && !publicValid) return valid = false;
+        if(myValid) this.standpointTypes.push({label:'我的观点',type:'my'});
+        if(publicValid) this.standpointTypes.push({label:'公共观点',type:'public'});
+        this.standpointActiveType = this.standpointTypes[0].type;
+      } else {
+        valid = this.checkBtnAuth('view');
+      }
+      return valid
+    },
+    setPublic(row){
+      eventInterface.setPublic({
+        KnowledgeResourceId:row.KnowledgeResourceId
+      }).then(res=>{
+        if(res.Ret != 200) return;
+        this.$message.success('设置成功')
+        this.getTableData()
+      })
+    },
+    handleApproveBack(row){
+      eventInterface.setCancel({
+        KnowledgeResourceId:row.KnowledgeResourceId
+      }).then(res=>{
+        if(res.Ret != 200) return;
+        this.$message.success('撤销成功')
+        this.getTableData()
+      })
+    },
+    tabChange(){
+      this.filterForm.states = [];
+      this.filterChange();
+    },
+    isShowEdit(row){
+      return (this.ResourceType != 4 && this.checkBtnAuth('edit')) 
+      || (this.ResourceType == 4 && this.standpointActiveType == 'my' && this.checkBtnAuth('my_edit') && (row.State == 0 || row.State == 3))
+      || (this.ResourceType == 4 && this.standpointActiveType == 'public' && this.checkBtnAuth('public_edit'));
+    },
+    isShowDelete(row){
+      return (this.ResourceType != 4 && this.checkBtnAuth('del')) 
+      || (this.ResourceType == 4 && this.standpointActiveType == 'my' && this.checkBtnAuth('my_del') && (row.State == 0 || row.State == 3))
+      || (this.ResourceType == 4 && this.standpointActiveType == 'public' && this.checkBtnAuth('public_del'));
+    },
     async getClassifyOptions() {
       const res = await eventInterface.getClassify({
         ResourceType: this.ResourceType
@@ -355,9 +475,22 @@ export default {
       this.usersOptions=res.Data.List || []
     },
 
+    sortChange({order}){
+      if(!order) {
+        this.filterForm.publishSort = ''
+        this.getTableData();
+        return;
+      };
+      this.filterForm.publishSort = order == "ascending" ? 'asc' : 'desc';
+      this.getTableData();
+    },
 
     async getTableData() {
-      if(!this.checkBtnAuth('view'))  //权限拦截
+      const auths = {
+        my:'my_view',
+        public:'public_view'
+      }
+      if(!this.checkBtnAuth(this.ResourceType == 4 ? auths[this.standpointActiveType] : 'view'))  //权限拦截
       return this.$message.warning('您当前暂无查看数据权限,如需查看,请联系管理员');
       const { pageNo,
         pageSize,
@@ -365,7 +498,9 @@ export default {
         sources,
         tags,
         users,
-        keyWord } = this.filterForm;
+        keyWord,
+        states,
+        publishSort } = this.filterForm;
       let params = {
         PageSize:pageSize,
         CurrentIndex:pageNo,
@@ -374,10 +509,16 @@ export default {
         TagIds:tags.join(','),
         Keyword:keyWord,
         SourceFrom: sources.join(','),
-        ResourceType: this.ResourceType
+        ResourceType: this.ResourceType,
+        IsShowMe:this.ResourceType == 4 && this.standpointActiveType == 'my' ? true : false,
+        IsShowPublic:this.ResourceType == 4 && this.standpointActiveType == 'public' ? true : false,
+        PublishSort:publishSort,
       }
-      const res = await eventInterface.getEventList(params)
+      if(this.ResourceType == 4 && this.standpointActiveType == 'my') params['State'] = states.join(',');
 
+      this.dataLoading = true;
+      const res = await eventInterface.getEventList(params)
+      this.dataLoading = false;
       if(res.Ret !==200 ) return 
 
       this.tableData = res.Data.List||[]
@@ -399,6 +540,7 @@ export default {
       this.filterForm.sources = []
       this.filterForm.tags = []
       this.filterForm.users = []
+      this.filterForm.states = []
       this.filterChange()
     },
 
@@ -407,7 +549,8 @@ export default {
         path: type==='look'?'/knowledgeDetail':'/knowledgeEdit',
         query: {
           id: item.KnowledgeResourceId,
-          source: this.ResourceType
+          source: this.ResourceType,
+          pointType: this.ResourceType == 4 ? this.standpointActiveType : ''
         }
       }) 
 
@@ -452,7 +595,6 @@ export default {
     //选择多个文件上传
     async moreFileSelectedImport(){
       let file = document.getElementById('moreFile').files;
-      console.log(file)
       if(file.length>30){
         return this.$message.warning('最多上传30个文件');
       }
@@ -524,6 +666,7 @@ export default {
         '/knowledge_policy': 'policy',
         '/knowledge_viewpoint': 'viewpoint',
         '/knowledge_know': 'know',
+        '/knowledge_standpoint':'standpoint'
       }
 
       let permission_prefix = authMap[this.$route.path]&&authMap[this.$route.path]

+ 1 - 0
src/views/knowledge_manage/tagSetting.vue

@@ -100,6 +100,7 @@ export default {
                 1: { name: '政策库',path:'knowledge_policy' },
                 2: { name: '报告库',path:'knowledge_viewpoint' },
                 3: { name: '知识库',path:'knowledge_know' },
+                4: { name: '观点库',path:'knowledge_standpoint' },
             }
             to.meta.pathFrom=pathMap[to.query.source].path;
             to.meta.pathName=pathMap[to.query.source].name;

+ 17 - 1
src/views/ppt_manage/mixins/pptMixins.js

@@ -231,7 +231,14 @@ export default {
             CoverContent,
             TitleSetting,
             AdminId,
-            ReportSource
+            ReportSource,
+            AddType,
+            ClassifyId,
+            Abstract,
+            CollaborateType,
+            CollaborateUsers,
+            InheritReportId,
+            CollaborateUserNames,
         } = res.Data
         const pptDate = formatPPTDate(this.currentLang, PptDate)
         let legalContent = Content ? JSON.parse(Content) : []
@@ -263,6 +270,15 @@ export default {
                 BackgroundImgId,
                 CurrentBackgroundImgId,
             },
+            BaseInfo:{
+              AddType,
+              ClassifyId,
+              Abstract,
+              CollaborateType,
+              CollaborateUsers,
+              InheritReportId,
+              CollaborateUserNames,
+            },
             ReportId,
             ModifyTime,
             PublishTime,

+ 18 - 4
src/views/ppt_manage/newVersion/components/catalog/addPptBaseDia.vue

@@ -63,6 +63,15 @@
           </el-input>
 
         </el-form-item>
+
+        <el-form-item prop="abstract" label="报告摘要">
+          <el-input
+            placeholder="请输入摘要"
+            v-model="formData.abstract"
+            style="width:400px"
+          >
+          </el-input>
+        </el-form-item>
         
        
         <el-form-item prop="cooperationType" :label="$t('ReportManage.ReportList.label_coop')">
@@ -172,7 +181,8 @@ export default {
                   NodeId: _.AdminId,
                   NodeName: _.AdminName
                 }))
-              : []
+              : [],
+            abstract:this.reportInfo.Abstract,
           }
 
       }
@@ -187,6 +197,7 @@ export default {
         title: "",
         cooperationType: 1,//协作方式
         cooperationUsers: [],
+        abstract:'',
         FirstPage:{
           CurrentBackgroundImg: "", 
           ImgUrl: "", 
@@ -242,6 +253,7 @@ export default {
         title: "",
         cooperationType: 1,//协作方式
         cooperationUsers: [],
+        abstract:'',
         FirstPage:{
           CurrentBackgroundImg: "", 
           ImgUrl: "", 
@@ -263,7 +275,8 @@ export default {
         CollaborateType: this.formData.cooperationType,
         InheritPptId: this.formData.inheritId,
         CollaborateUserIds: this.formData.cooperationUsers.map(_ => _.NodeId),
-        FirstPage:this.formData.FirstPage
+        FirstPage:this.formData.FirstPage,
+        Abstract:this.formData.abstract,
       };
 
       // 编辑
@@ -320,12 +333,13 @@ export default {
 
     /* 选择继承报告 */
     async chooseInheritReport(item) {
-      const { PptId,Title,CollaborateType,CollaborateUsers,ClassifyId } = item;
+      const { PptId,Title,CollaborateType,CollaborateUsers,ClassifyId,Abstract } = item;
 
       this.formData.title = Title;
       this.formData.cooperationType = CollaborateType;
       this.formData.inheritId = PptId;
-      this.formData.classify = ClassifyId
+      this.formData.classify = ClassifyId;
+      this.formData.abstract = Abstract;
       
       //继承的章节报告默认带出协作人
       if(CollaborateType===1) {

+ 16 - 6
src/views/ppt_manage/newVersion/components/catalog/mergePPTDialog.vue

@@ -92,6 +92,15 @@
               </el-input>
 
             </el-form-item>
+
+            <el-form-item prop="Abstract" label="报告摘要">
+              <el-input
+                placeholder="请输入报告摘要"
+                v-model="pptInfo.Abstract"
+                style="width:400px"
+              >
+              </el-input>
+            </el-form-item>
             
             <el-form-item prop="cooperationType" :label="$t('ReportManage.ReportList.label_coop')">
               <el-radio-group
@@ -166,7 +175,7 @@ export default {
         classify: 0,
         cooperationType: 1,//协作方式
         cooperationUsers:[],
-
+        Abstract:'',
       },//PPT的标题信息
       publicList:[],
       catalogPPTList:[],
@@ -300,7 +309,7 @@ export default {
       })
 
       if(res_font.Ret===200){
-        content_font = JSON.parse(res_font.Data.Content)
+        content_font = res_font.Data.Content ? JSON.parse(res_font.Data.Content) : [];
         this.pptInfo={
           ...this.pptInfo,
           ImgUrl:res_font.Data.BackgroundImg,
@@ -316,7 +325,7 @@ export default {
       })
 
       if(res_back.Ret===200){
-        content_back = JSON.parse(res_back.Data.Content)
+        content_back = res_back.Data.Content ? JSON.parse(res_back.Data.Content) : [];
       }
 
       //合并两个content,并给每个重新赋id,保证id唯一
@@ -337,9 +346,9 @@ export default {
         CurrentBackgroundImg,
         BackCoverImg,
         BackCoverImgId,
-        BackgroundImgId
+        BackgroundImgId,
+        Abstract,
       } = this.pptInfo
-      console.log(this.pptInfo)
       const res = await pptInterface.addpptV2({
           FirstPage:{
             Title,
@@ -358,7 +367,8 @@ export default {
           Title: Title,
           CollaborateType: this.pptInfo.cooperationType,
           InheritPptId: 0,
-          CollaborateUserIds: this.pptInfo.cooperationUsers.map(_ => _.NodeId)
+          CollaborateUserIds: this.pptInfo.cooperationUsers.map(_ => _.NodeId),
+          Abstract,
         })
       
       if(res.Ret===200){

+ 3 - 1
src/views/ppt_manage/newVersion/components/editor/InsertKnowledge.vue

@@ -202,8 +202,9 @@ export default {
       return [
         { type: 0, title: "事件库" },
         { type: 1, title: "政策库" },
-        { type: 2, title: "报告库" },
+        // { type: 2, title: "报告库" },
         { type: 3, title: "知识库" },
+        { type: 4, title: "观点库" },
       ];
     },
   },
@@ -239,6 +240,7 @@ export default {
         ResourceType: this.ResourceType,
         IncludeFile: "no",
         IsShowMe,
+        IsQueryRef:true,
       };
       this.dataLoading = true;
       const res = await eventInterface.getEventListByES(params);

+ 330 - 0
src/views/ppt_manage/newVersion/components/editor/setBaseInfo.vue

@@ -0,0 +1,330 @@
+<template>
+    <div>
+      <el-dialog
+        title="基本信息"
+        :visible.sync="show"
+        :modal-append-to-body="false"
+        :close-on-click-modal="false"
+        :center="true"
+        v-dialogDrag
+        width="800px"
+        top="5vh"
+        @close="handleClose"
+      >
+        <el-form
+          :model="formData"
+          :rules="rules"
+          ref="baseinfoForm"
+          class="ppt-baseInfo-wrap"
+          label-width="125px"
+        >
+          <el-form-item prop="type" :label="$t('ReportManage.ReportList.label_add_way')">
+            <el-radio-group
+              v-model="formData.type"
+              :disabled="true"
+            >
+              <el-radio :label="1">{{
+                $t("ReportManage.ReportList.new_report_radio")
+              }}</el-radio>
+              <el-radio :label="2">{{
+                $t("ReportManage.ReportList.inherit_report_radio")
+              }}</el-radio>
+            </el-radio-group>
+          </el-form-item>
+  
+          <el-form-item prop="classify" :label="$t('ReportManage.ReportList.label_report_classify')">
+            <el-cascader
+              ref="cascader"
+              :options="classifyArr"
+              :disabled="true"
+              v-model="formData.classify"
+              :props="{
+                value: 'Id',
+                label: 'ClassifyName',
+                children: 'Child',
+                emitPath: false
+              }"
+              :placeholder="$t('ReportManage.ReportList.please_select_category')"
+              size="medium"
+              style="width: 400px"
+            />
+          </el-form-item>
+  
+  
+          <el-form-item prop="title" :label="$t('ReportManage.ReportList.label_report_tit')">
+            <el-input
+              :placeholder="$t('ReportManage.ReportList.input_title_please')"
+              v-model="formData.title"
+              style="width:400px"
+            >
+            </el-input>
+  
+          </el-form-item>
+  
+          <el-form-item prop="abstract" label="报告摘要">
+            <el-input
+              placeholder="请输入报告摘要"
+              v-model="formData.abstract"
+              style="width:400px"
+            >
+            </el-input>
+  
+          </el-form-item>
+          
+         
+          <el-form-item prop="cooperationType" :label="$t('ReportManage.ReportList.label_coop')">
+            <el-radio-group
+              v-model="formData.cooperationType"
+              :disabled="true"
+              @change="formData.cooperationUsers=[]"
+            >
+              <el-radio :label="1"><!-- 个人 -->{{$t('ReportManage.ReportList.coop_own')}}</el-radio>
+              <el-radio :label="2"><!-- 多人协作 -->{{$t('ReportManage.ReportList.coop_more')}}</el-radio>
+            </el-radio-group>
+  
+            <el-button 
+              type="text" 
+              v-if="formData.cooperationType===2"
+              style="margin-left: 20px"
+              @click="handleChooseCooper"
+            ><!-- 选择协作人 -->{{$t('ReportManage.ReportList.choose_cooper')}}</el-button>
+            
+            <div class="choosed-cooper" v-if="formData.cooperationUsers.length">
+              <el-tag
+                v-for="(item,index) in formData.cooperationUsers"
+                :key="item.NodeId"
+                size="mini"
+                effect="dark"
+                closable
+                @close="removeCooper(index)"
+              >
+                {{ item.NodeName }}
+              </el-tag>
+            </div>
+          </el-form-item>
+  
+        </el-form>
+        <div style="text-align: center; margin-top: 60px; margin-bottom: 40px">
+          <el-button
+            type="primary"
+            plain
+            style="width: 120px"
+            @click="handleClose"
+            >{{ $t("Dialog.cancel_btn") }}</el-button
+          >
+          <el-button type="primary" style="width: 120px" @click="handleConfirm">{{
+            $t("Dialog.confirm_btn")
+          }}</el-button>
+        </div>
+      </el-dialog>
+  
+      <!-- 选择协作人弹窗 -->
+      <chooseCooperaUserDia
+        :isShow.sync="isChooseCooperaUser"
+        :users="formData.cooperationUsers"
+        @save="getChooseCooperaUser"
+      />
+
+    </div>
+  </template>
+  
+  <script>
+  import { pptInterface } from '@/api/api.js';
+  import chooseCooperaUserDia from '@/views/report_manage/reportV2/components/chooseCooperaUserDia.vue';
+  export default {
+    components: { chooseCooperaUserDia },
+    props: {
+      show: {
+        type: Boolean,
+        default: false,
+      },
+      baseInfo: {
+        type: Object
+      },
+      title:{
+        type:String,
+        default:''
+      }
+    },
+    watch: {
+      show(n) {
+        if (!n) return
+        this.getclassifylist();
+        let CollaborateUsers = !this.baseInfo.CollaborateUsers ? [] : this.baseInfo.CollaborateUsers.split(',').map((item,index) => {
+          let i = this.baseInfo.CollaborateUserNames.findIndex(_=>Object.keys(_)[0] == item)
+          return {
+                NodeId: +item,
+                NodeName: this.baseInfo.CollaborateUserNames[i][item]
+            }
+        });
+        this.formData = {
+            type:this.baseInfo.AddType,
+            inheritId:this.baseInfo.InheritReportId,
+            classify:this.baseInfo.ClassifyId,
+            title:this.title,
+            cooperationType:this.baseInfo.CollaborateType,
+            cooperationUsers:CollaborateUsers,
+            abstract:this.baseInfo.Abstract,
+        }
+      },
+    },
+    data() {
+      return {
+        formData: {
+          type: 1,
+          inheritId: 0,//继承report id
+          classify: 0,
+          title: "",
+          cooperationType: 1,//协作方式
+          cooperationUsers: [],
+          abstract:'',
+        },
+  
+        classifyArr: [],
+        authorlist: [],
+  
+        //协作人弹窗
+        isChooseCooperaUser: false,
+
+      };
+    },
+    computed: {
+      rules() {
+        return {
+          type: [
+            {
+              required: true,
+              message: this.$t("ReportManage.ReportList.please_report_type_select"),
+              trigger: "change",
+            },
+          ],
+          classify: [
+            {
+              required: true,
+              message: this.$t("ReportManage.ReportList.please_report_type_select"),
+              trigger: "change",
+            },
+          ],
+          title: [
+            {
+              required: true,
+              message: this.$t("ReportManage.ReportList.please_report_title_input"),
+              trigger: "blur",
+            },
+          ],
+        };
+      },
+    },
+    methods: {
+      handleClose() {
+        this.$refs.baseinfoForm.resetFields()
+        this.formData = {
+          type: 1,
+          inheritId: 0,//继承report id
+          classify: 0,
+          title: "",
+          cooperationType: 1,//协作方式
+          cooperationUsers: [],
+          abstract:'',
+        },
+        this.$emit("update:show", false);
+      },
+  
+      async handleConfirm() {
+        await this.$refs.baseinfoForm.validate()
+        let res = await pptInterface.pptTitleCheck({PptId:this.$route.query.id || 0,Title:this.formData.title});
+        if(res.Ret != 200) return;
+        this.$emit('baseInfoSuccess',this.formData)
+      },
+  
+      //选择协作人
+      handleChooseCooper() {
+        this.isChooseCooperaUser = true
+      },
+  
+      getChooseCooperaUser(val) {
+        this.formData.cooperationUsers = val;
+      },
+  
+      removeCooper(index) {
+        this.formData.cooperationUsers.splice(index,1)
+      },
+  
+  
+      // 获取选择的分类名称
+      getSelectClassifyName() {
+        let arr = [];
+        this.classifyArr.forEach((item) => {
+          if (
+            this.formData.classify[0] &&
+            item.value === this.formData.classify[0]
+          ) {
+            arr.push(item.label);
+            if (item.children && item.children.length > 0) {
+              item.children.forEach((_item) => {
+                if (
+                  this.formData.classify[1] &&
+                  _item.value === this.formData.classify[1]
+                ) {
+                  arr.push(_item.label);
+                }
+              });
+            }
+          }
+        });
+        return arr;
+      },
+  
+      // 获取分类
+      getclassifylist() {
+        //获取分类列表
+        pptInterface.getCatalogsListV2({Source: 1}).then((res) => {
+          if (res.Ret == 200 && Array.isArray(res.Data)) {
+            this.classifyArr = res.Data||[];
+            this.filterNodes(this.classifyArr)
+          }
+        });
+      },
+  
+      filterNodes(arr) {
+              arr.length && arr.forEach(item => {
+                  if(item.Child && item.Child.length) {
+            this.filterNodes(item.Child)
+          }else {
+            delete item.Child
+          }
+              })
+          }
+    },
+  };
+  </script>
+  
+  <style lang="scss">
+  .ppt-baseInfo-wrap {
+    width: 85%;
+    margin: 0 auto;
+    .el-input {
+      width: 100%;
+    }
+    .el-input-group__append {
+      background-color: #0052D9;
+      color: #fff;
+    }
+    .el-form-item {
+      margin-left: auto;
+      margin-right: auto;
+    }
+    .choosed-cooper {
+      display: flex;
+      flex-wrap: wrap;
+      gap: 10px;
+    }
+    .permission-wrap {
+      width: 80%;
+      display: flex;
+      flex-wrap: wrap;
+      gap: 5px;
+    }
+  }
+  </style>
+  

+ 116 - 37
src/views/ppt_manage/newVersion/pptCatalog.vue

@@ -123,32 +123,52 @@
         </div>
         <div class="tool-side ppt-page-wrap">
           <div class="ppt-info">
-            <div> 创建人:{{pptItem.AdminRealName}}</div>
-            <div>
-              更新时间:<br/>
-              {{$moment(pptItem.ModifyTime).format('YYYY-MM-DD HH:mm:ss')}}
+            <div class="top-title">更多信息</div>
+            <div style="margin-bottom: 10px;">
+              <div style="margin-bottom: 4px;" class="item-title">创建人</div>
+              <div class="item-content">{{pptItem.AdminRealName}}</div>
             </div>
-            <div v-if="pptItem.ReportSource===1&&pptItem.PublishTime">
-              发布时间:<br/>
-              {{$moment(pptItem.PublishTime).format('YYYY-MM-DD HH:mm:ss')}}
+
+            <div style="margin-bottom: 10px;">
+              <div style="margin-bottom: 4px;" class="item-title">更新时间</div>
+              <div class="item-content">{{$moment(pptItem.ModifyTime).format('YYYY-MM-DD HH:mm:ss')}}</div>
             </div>
-            <div v-else-if="pptItem.ReportSource===2&&pptItem.ApproveTime">
-              审批时间:<br/>
-              {{$moment(pptItem.ApproveTime).format('YYYY-MM-DD HH:mm:ss')}}
+
+            <div v-if="pptItem.ReportSource===1&&pptItem.PublishTime" style="margin-bottom: 10px;">
+              <div style="margin-bottom: 4px;" class="item-title">发布时间</div>
+              <div class="item-content">{{$moment(pptItem.PublishTime).format('YYYY-MM-DD HH:mm:ss')}}</div>
             </div>
-            <div>
-              报告状态:{{getReportStatus(pptItem.State)}}
 
+            <div v-else-if="pptItem.ReportSource===2&&pptItem.ApproveTime" style="margin-bottom: 10px;">
+              <div style="margin-bottom: 4px;" class="item-title">审批时间</div>
+              <div class="item-content">{{$moment(pptItem.ApproveTime).format('YYYY-MM-DD HH:mm:ss')}}</div>
+            </div>
+            
+            <div style="display: flex;align-items: center;">
+              <div class="report-state">报告状态</div>
+              <div class="approve-state" :style="`color:${getReportStyle(pptItem.State).color};background-color:${getReportStyle(pptItem.State).background};`">{{getReportStatus(pptItem.State)}}</div>
             </div>
           </div>
+          <div v-if="pptItem.Abstract" class="abstract-info">
+            <div class="top-title">摘要</div>
+             <el-tooltip
+                placement="top"
+                v-tooltiphidden
+              >
+              <div slot="content" class="abstract-tooltip-ppt">{{ pptItem.Abstract }}</div>
+              <div class="abstract-content">{{ pptItem.Abstract }}</div>
+            </el-tooltip>
+          </div>
           <div class="tool-list-operation">
-            <span>{{$t('Slides.operation_info')}}</span>
+            <span class="top-title">{{$t('Slides.operation_info')}}</span>
             <div class="tool-list">
-              <span v-for="item in pptToolList" :key="item.key" 
+              <div v-for="item in pptToolList" :key="item.key" 
                 :class="{'delete':item.key==='delete'}"
+                style="display: flex;align-items: center;margin-bottom: 16px;"
                 @click="handleToolClick(item)">
-                {{item.label}}
-              </span>
+                <img :src="require(`@/assets/img/ppt_m/view-icon-${item.key}.png`)" style="width: 16px;height: 16px;">
+                <span style="margin-left: 10px;">{{item.label}}</span>
+              </div>
             </div>
           </div>
         </div>
@@ -217,6 +237,15 @@ export default {
         return false;
       };
     },
+    tooltiphidden(el,binding,vnode){
+      el.onmouseenter=(e)=>{
+        if(el.scrollHeight > el.clientHeight){
+          vnode.componentInstance.disabled=false
+        }else{
+          vnode.componentInstance.disabled=true
+        }
+      }
+    },
   },
   data() {
     return {
@@ -301,6 +330,18 @@ export default {
       return statusMap.get(state)||""
     },
 
+    getReportStyle(state){
+       const colors = {
+        1:{color:'#E37318',background:'#FFF1E9'},
+        2:{color:'#0052D9',background:'#ECF2FE'},
+        3:{color:'#E37318',background:'#FFF1E9'},
+        4:{color:'#E37318',background:'#FFF1E9'},
+        5:{color:'#D54941',background:'#FFF0ED'},
+        6:{color:'#0052D9',background:'#ECF2FE'},
+       }
+       return colors[state] || {}
+    },
+
     //加载ppt列表
     handleLoadPpt: _.throttle(function() {
 			let scrollTop = this.$refs.pptListRef.scrollTop;
@@ -785,6 +826,11 @@ export default {
   background-color: #ecf5ff !important;
   color: #66b1ff !important;
 }
+.abstract-tooltip-ppt{
+  max-width: 500px; 
+  white-space: normal; 
+  word-break: break-word;
+}
 </style>
 <style scoped lang="scss">
 .catalog-wrap{
@@ -961,37 +1007,70 @@ export default {
       .tool-side{
         margin-left: 20px;
         width:180px;
-        background-color: white;
+        background-color: #FFFFFF;
         height: calc(100vh - 120px);
-        // padding:20px;
-        // overflow-y: scroll;
-        border-left: 1px solid #eaeaea;
+        border: 1px solid #DCDFE6;
+        padding: 20px 10px 0;
         &::-webkit-scrollbar-track{
           display: none;
         }
-        .ppt-info{
+        .top-title{
+          font-size: 18px;
+          color: #333333;
+          font-weight: 400;
+          margin-bottom: 16px;
+        }
+        .item-title{
+          font-size: 14px;
+          font-weight: 400;
+          color: #333333;
+          line-height: 22px;
+        }
+        .item-content{
           font-size: 14px;
-          color: rgba($color: #000000, $alpha: 0.7);
-          margin-bottom: 5px;
-          padding: 16px 12px;
-          border-bottom: 2px solid rgba($color: #333333, $alpha: 0.03);
-          >div {
-            margin: 7px 0;
+          font-weight: 400;
+          color: #666666;
+          line-height: 22px;
+        }
+        .ppt-info{
+          padding-bottom: 20px;
+          border-bottom: 1px solid #C8CDD9;
+          margin-bottom: 20px;
+          .report-state{
+            font-size: 14px;
+            color: #333333;
+          }
+          .approve-state{
+            padding: 4px 16px;
+            margin-left: 20px;
+            border-radius: 4px;
+          }
+        }
+        .abstract-info{
+          border-bottom: 1px solid #C8CDD9;
+          padding-bottom: 20px;
+          margin-bottom: 20px;
+          .abstract-content{
+            display: -webkit-box;
+            -webkit-line-clamp: 3;
+            -webkit-box-orient: vertical;
+            overflow: hidden;
+            white-space: normal;
+            word-break: break-all;
+            text-overflow: ellipsis;
+            font-family: PingFang SC;
+            font-size: 12px;
+            font-weight: 400;
+            line-height: 18px;
+            color: #333333;
           }
         }
         .tool-list-operation{
-          padding: 0 20px 20px;
           .tool-list{
-            margin-top: 20px;
-            display: flex;
-            flex-direction: column;
-            align-items: center;
-            span{
+            margin-top: 16px;
+            div{
               cursor: pointer;
-              color:#409eff;
-              display: inline-block;
-              height: 35px;
-              line-height: 35px;
+              color:#0052D9;
               &.delete{
                 color: red;
               }

+ 48 - 6
src/views/ppt_manage/newVersion/pptEditor.vue

@@ -6,7 +6,10 @@
               <p class="hint-text" @click="openSelectImage(2,firstPage.CurrentBackgroundImgId,firstPage.CurrentBackgroundImg)">{{$t('Slides.select_ground_page')}}</p>
               <p class="hint-text" style="margin-left:37px" @click="openSelectImage(3,firstPage.BackCoverImgId,firstPage.BackCoverImg)">{{$t('Slides.select_back_page')}}</p>
             </div>
-            <div class="flex-align" style="margin:8px 0"><p class="hint-text"  @click="openChooseCover">{{$t('Slides.select_cover_page')}}</p></div>
+            <div class="flex-align" style="margin:8px 0">
+              <p class="hint-text"  @click="openChooseCover">{{$t('Slides.select_cover_page')}}</p>
+              <p class="hint-text" v-if="isShowBaseInfo"  @click="showBaseInfo = true" style="margin-left:37px">基本信息</p>
+            </div>
             <div class="cover" @click="openChooseCover" :style="`background: no-repeat center/cover url(${firstPage.BackgroundImg||''});background-color:#F2F6FA;background-size:100% 100%;`">
                 <img src="~@/assets/img/ppt_m/add_first.png" />
             </div>
@@ -336,6 +339,13 @@
       @cancel="addMyChartShow = false"
       @addSuccess="addChartToGallery"
     />
+    <!-- 基础信息 -->
+    <setBaseInfo
+    :show.sync="showBaseInfo"
+    :baseInfo="baseInfo"
+    :title="firstPage.Title"
+    @baseInfoSuccess="baseInfoSuccess"
+    ></setBaseInfo>
     <selectImage @saveChoose='saveChooseImage' ref="selectImageRef"/>
   </div>
 </template>
@@ -377,6 +387,7 @@ import ChooseCoverNew from './components/editor/ChooseCoverNew.vue';
 import TitleEditorTool from './components/editor/TitleEditorTool';
 import selectImage from './components/selectImage.vue';
 import { apiSmartReport } from '@/api/modules/smartReport'
+import setBaseInfo from './components/editor/setBaseInfo.vue';
 export default {
   mixins:[pptmixin,//ppt页面共同逻辑
           mixins,//图表加载逻辑
@@ -386,7 +397,7 @@ export default {
   components: {
     IndexItem, ChooseCover, AddFormat, ShapePreview,
     LayerEditTool, DeletePageDialog, ChangeFormatDialog, InsertPageDialog, addMyClassifyDia, InsertCharts, ContextMenu, InsertSemantics,
-    ChooseCoverNew, TitleEditorTool,selectImage, VersionRecord,InsertKnowledge
+    ChooseCoverNew, TitleEditorTool,selectImage, VersionRecord,InsertKnowledge,setBaseInfo
 },
   data() {
     return {
@@ -404,6 +415,15 @@ export default {
             BackIndex:0,//ETA基本配置上线后不用了
             TemplateType:1,//ETA基本配置上线后不用了
         },//封面信息
+        baseInfo:{
+            AddType:1,
+            ClassifyId:0,
+            Abstract:'',
+            CollaborateType:1,
+            CollaborateUsers:'',
+            InheritReportId:0,
+            CollaborateUserNames:'',
+        },//基础信息
         key_word:'',//搜索图表关键字
         chartList:[],//图表数组
         imgUrl:'',//黏贴图片上传后的地址
@@ -446,6 +466,8 @@ export default {
         chart_source: 1,//图表来源 1 eta 2 商品价格
         isShowMe: false,
         isVersionHistory: false,//是否显示版本历史
+        showBaseInfo:false,
+        isShowBaseInfo:false,//是否展示基础信息
     };
   },
   computed:{
@@ -457,7 +479,9 @@ export default {
         {val:'知识资源',label:'知识资源'}
       ]
     },  
-    
+    UserId(){
+        return Number(localStorage.getItem("AdminId"));
+    },
   },
   created() {
     //获取图表,沙盘,表格数据
@@ -535,20 +559,32 @@ export default {
       //开启自动保存
       this.autoSave()
     },
+    baseInfoSuccess(data){
+      this.baseInfo.Abstract = data.abstract;
+      this.baseInfo.AddType = data.type;
+      this.baseInfo.ClassifyId = data.classify;
+      this.baseInfo.CollaborateType = data.cooperationType;
+      this.baseInfo.CollaborateUsers = data.cooperationUsers && data.cooperationUsers.length > 0 ? data.cooperationUsers.map(_=>_.NodeId).join(',') : '';
+      this.baseInfo.InheritReportId = data.inheritId;
+      this.firstPage.Title = data.title;
+      this.showBaseInfo = false;
+    },
     async getpptData(){
       const {id} = this.$route.query
       if(id){
         await this.getpptDataById(id)
         const {status} = this.result
         if(status===200){
-          const {content,FirstPage,ReportId,TitleSetting} = this.result
+          const {content,FirstPage,ReportId,TitleSetting,BaseInfo,AdminId} = this.result
           this.pageList = content
           this.firstPage = FirstPage
+          this.baseInfo = BaseInfo;
           this.firstPage.BackIndex = FirstPage.TemplateType-1
           this.currentItem = this.pageList[0]
           this.ReportId=ReportId
           this.CoverContent = this.result.CoverContent
           this.titleSetting = TitleSetting||null
+          this.isShowBaseInfo = AdminId == this.UserId;
           if(this.firstPage.CurrentBackgroundImg){
             $('.ppt-item').css('background-image',`url(${this.firstPage.CurrentBackgroundImg})`);
           }
@@ -1205,7 +1241,9 @@ export default {
         Content:Content,
         GroupId:this.catalogId,
         CoverContent:this.CoverContent,
-        TitleSetting:JSON.stringify(this.titleSetting)
+        TitleSetting:JSON.stringify(this.titleSetting),
+        Abstract:this.baseInfo.Abstract || '',
+        CollaborateUsers:this.baseInfo.CollaborateUsers || '',
       }).then(res=>{
         this.isSaved = false
         if(res.Ret===200){
@@ -1226,7 +1264,9 @@ export default {
         FirstPage:FirstPage,
         Content:Content,
         CoverContent:this.CoverContent,
-        TitleSetting:JSON.stringify(this.titleSetting)
+        TitleSetting:JSON.stringify(this.titleSetting),
+        Abstract:this.baseInfo.Abstract || '',
+        CollaborateUsers:this.baseInfo.CollaborateUsers || '',
       }).then(res=>{
         this.isSaved = false
         if(res.Ret===200){
@@ -1266,6 +1306,8 @@ export default {
           Content:Content,
           CoverContent:this.CoverContent,
           TitleSetting,
+          Abstract:this.baseInfo.Abstract || '',
+          CollaborateUsers:this.baseInfo.CollaborateUsers || '',
         }).then((res)=>{
             if(res.Ret!==200) return 
             this.showLastSaveTime = true

+ 3 - 1
src/views/report_manage/reportV2/normalReport/components/KnowResource.vue

@@ -199,8 +199,9 @@ export default {
       return [
         { type: 0, title: "事件库" },
         { type: 1, title: "政策库" },
-        { type: 2, title: "报告库" },
+        // { type: 2, title: "报告库" },
         { type: 3, title: "知识库" },
+        { type: 4, title: "观点库" },
       ];
     },
   },
@@ -239,6 +240,7 @@ export default {
         ResourceType: this.ResourceType,
         IncludeFile: "no",
         IsShowMe,
+        IsQueryRef:true,
       };
       this.dataLoading = true;
       const res = await eventInterface.getEventListByES(params);

+ 3 - 1
src/views/report_manage/reportV2/smartReport/components/KnowResource.vue

@@ -208,8 +208,9 @@ export default {
       return [
         { type: 0, title: "事件库" },
         { type: 1, title: "政策库" },
-        { type: 2, title: "报告库" },
+        // { type: 2, title: "报告库" },
         { type: 3, title: "知识库" },
+        { type: 4, title: "观点库" },
       ];
     },
   },
@@ -257,6 +258,7 @@ export default {
         ResourceType: this.ResourceType,
         IncludeFile: "no",
         IsShowMe,
+        IsQueryRef:true,
       };
       this.dataLoading = true;
       const res = await eventInterface.getEventListByES(params);