Browse Source

研报优化

jwyu 1 year ago
parent
commit
b7919ef7b2
40 changed files with 779 additions and 89 deletions
  1. 2 0
      src/api/api.js
  2. 2 0
      src/api/modules/oldApi.js
  3. 5 0
      src/api/modules/reportEnApi.js
  4. 4 0
      src/api/modules/semanticsApi.js
  5. 1 1
      src/mixins/index.js
  6. 20 8
      src/routes/modules/chartRoutes.js
  7. 5 1
      src/routes/modules/futuresRoutes.js
  8. 1 1
      src/routes/modules/oldRoutes.js
  9. 8 0
      src/views/chartRelevance_manage/fittingEquationChartEditor.vue
  10. 2 2
      src/views/chartRelevance_manage/fittingEquationList.vue
  11. 2 2
      src/views/chartRelevance_manage/list.vue
  12. 8 0
      src/views/chartRelevance_manage/relevanceChartEditor.vue
  13. 8 0
      src/views/chartRelevance_manage/statisticFeatureChartEditor.vue
  14. 2 2
      src/views/chartRelevance_manage/statisticFeatureList.vue
  15. 1 1
      src/views/classify_manage/classifyEnlist.vue
  16. 2 2
      src/views/classify_manage/classifylist.vue
  17. 1 1
      src/views/dataEntry_manage/databaseComponents/addTargetDiaBase.vue
  18. 8 0
      src/views/dataEntry_manage/onlineExcelCopy.vue
  19. 1 1
      src/views/dataEntry_manage/targetList.vue
  20. 8 0
      src/views/datasheet_manage/customSheetEdit.vue
  21. 8 0
      src/views/datasheet_manage/mixedSheetEdit.vue
  22. 16 0
      src/views/futures_manage/chartEditor.vue
  23. 2 1
      src/views/futures_manage/commodityChartBase.vue
  24. 112 0
      src/views/ppt_manage/newVersion/components/editor/InsertSemantics.vue
  25. 6 2
      src/views/ppt_manage/newVersion/pptEditor.vue
  26. 7 2
      src/views/ppt_manage/newVersion/pptEnEditor.vue
  27. 93 4
      src/views/report_manage/addreportNew.vue
  28. 112 0
      src/views/report_manage/components/importSemantics.vue
  29. 1 1
      src/views/report_manage/dayOrWeek.vue
  30. 15 25
      src/views/report_manage/editChapterReport.vue
  31. 105 2
      src/views/report_manage/editreportNew.vue
  32. 4 2
      src/views/report_manage/mixins/messagePush.js
  33. 26 0
      src/views/report_manage/mixins/reportMixin.js
  34. 99 2
      src/views/report_manage/reportEn/reportEditor.vue
  35. 24 12
      src/views/report_manage/reportEn/reportlist.vue
  36. 1 1
      src/views/report_manage/reportVariety.vue
  37. 43 5
      src/views/report_manage/reportlist.vue
  38. 4 0
      src/views/semantics_manage/semantics/components/selectFileDialog.vue
  39. 3 3
      src/views/semantics_manage/semanticsPage.vue
  40. 7 5
      src/views/system_manage/dataAuthManage.vue

+ 2 - 0
src/api/api.js

@@ -130,6 +130,7 @@ const {
   reportauthor,
   getDraft,
   autosave,
+  reportSetPrepublish,
   classifylist,
   classifyparent,
   classifyadd,
@@ -202,6 +203,7 @@ export {
   reportauthor,
   getDraft,
   autosave,
+  reportSetPrepublish,
   classifylist,
   classifyparent,
   classifyadd,

+ 2 - 0
src/api/modules/oldApi.js

@@ -20,6 +20,7 @@ import http from "@/api/http.js"
  const reportauthor = params => { return http.get('/report/author',params); };  //获取作者
  const getDraft = params => { return http.get('/report/getDraft',params); };  //获取草稿
  const autosave = params => { return http.post('/report/saveReportContent',params); };  //保存
+ const reportSetPrepublish=params=>{return http.post('/report/pre_publish',params);};//报告设置定时发布
 
  const classifylist = params => { return http.get('/classify/list',params); };  //获取分类列表
  const classifyparent = params => { return http.get('/classify/parent',params); };  //获取父级分类
@@ -309,6 +310,7 @@ export {
 	reportauthor,
 	getDraft,
 	autosave,
+	reportSetPrepublish,
 	classifylist,
 	classifyparent,
 	classifyadd,

+ 5 - 0
src/api/modules/reportEnApi.js

@@ -162,6 +162,11 @@ export const markReport=params => {
   return http.post('/english_report/mark',params)
 }
 
+//定时发布报告
+export const enReportPrepblish=params=>{
+	return http.post('/english_report/pre_publish',params)
+}
+
 /* 发送日志 */
 export const logInterface = {
 	/**

+ 4 - 0
src/api/modules/semanticsApi.js

@@ -270,6 +270,10 @@ const semanticInterface = {
    */
   moveCompare:params => {
       return http.post('/semantic_analysis/compare/move',params)
+  },
+  //对比文档列表数据
+  compareSearch:params=>{
+    return http.get('/semantic_analysis/compare/search',params)
   }
 }
 

+ 1 - 1
src/mixins/index.js

@@ -9,7 +9,7 @@ const mixins = {
 			if(time==='0001-01-01 00:00:00'||time==='0000-00-00 00:00:00'){
 				return '--'
 			}else{
-				return time.replace(/-/g,'.')
+				return time?time.replace(/-/g,'.'):''
 			}
 			
 		},

+ 20 - 8
src/routes/modules/chartRoutes.js

@@ -93,12 +93,12 @@ export default [
 			},
 			{
 				path:"addCustomSheet",
-				name:"表格编辑",
+				name:"添加表格",
 				component:()=>import('@/views/datasheet_manage/customSheetEdit.vue')
 			},
 			{
 				path:"addMixedSheet",
-				name:"表格编辑",
+				name:"添加表格",
 				component:()=>import('@/views/datasheet_manage/mixedSheetEdit.vue')
 			}
 		]
@@ -153,7 +153,7 @@ export default [
 	{
 		path:'/',
 		component: home,
-		name: '相关性',
+		name: '统计分析',
 		hidden:  false,
 		children: [
 			{
@@ -169,12 +169,20 @@ export default [
 			{
 				path: 'fittingEquationChartEditor',
 				name: '添加图表',
-				component: () => import('@/views/chartRelevance_manage/fittingEquationChartEditor.vue')
+				component: () => import('@/views/chartRelevance_manage/fittingEquationChartEditor.vue'),
+				meta: { 
+					pathFrom: "fittingEquationList",
+          			pathName: "拟合方程曲线",
+				}
 			},
 			{
 				path: 'relevancechartEditor',
-				name: '图表编辑',
-				component:()=>import('@/views/chartRelevance_manage/relevanceChartEditor.vue')
+				name: '编辑图表',
+				component:()=>import('@/views/chartRelevance_manage/relevanceChartEditor.vue'),
+				meta: { 
+					pathFrom: "chartrelevance",
+          			pathName: "相关性图表",
+				}
 			},
 			{
 				path: 'statisticFeatureList',
@@ -183,8 +191,12 @@ export default [
 			},
 			{
 				path: 'statisticFeatureChartEditor',
-				name: '图表编辑',
-				component:()=>import('@/views/chartRelevance_manage/statisticFeatureChartEditor.vue')
+				name: '编辑图表',
+				component:()=>import('@/views/chartRelevance_manage/statisticFeatureChartEditor.vue'),
+				meta: { 
+					pathFrom: "statisticFeatureList",
+          			pathName: "统计特征",
+				}
 			}
 		]
 	}

+ 5 - 1
src/routes/modules/futuresRoutes.js

@@ -20,7 +20,11 @@ export default [
       {
 				path: "addCommodityChart",
 				name: "编辑图表",
-				component: () => import('@/views/futures_manage/chartEditor.vue')
+				component: () => import('@/views/futures_manage/chartEditor.vue'),
+				meta: { 
+					pathFrom: "commordityChartBase",
+          			pathName: "商品价格曲线",
+				}
 			},
     ]
   }  

+ 1 - 1
src/routes/modules/oldRoutes.js

@@ -187,7 +187,7 @@ export default [
         path: "reportEnEditor",
         component: () =>
           import("@/views/report_manage/reportEn/reportEditor.vue"),
-        name: "英文研报编辑",
+        name: "添加英文研报",
         hidden: false,
       },
       {

+ 8 - 0
src/views/chartRelevance_manage/fittingEquationChartEditor.vue

@@ -361,6 +361,14 @@ export default {
 	},
 	destroyed() {
 		window.removeEventListener('resize', this.reloadRightWid);
+	},
+	beforeRouteEnter(to, from, next) {
+		if(to.query.code){
+			to.matched[1].name='编辑图表'
+		}else{
+			to.matched[1].name='添加图表'
+		}
+		next()
 	}
 };
 </script>

+ 2 - 2
src/views/chartRelevance_manage/fittingEquationList.vue

@@ -391,7 +391,7 @@ export default {
 
 		/* 添加一级目录 */
 		addLevelOneHandle() {
-			this.dialog_title = '添加';
+			this.dialog_title = '添加图表分类';
 			this.classifyForm = {
 				classify_name: '',
 			}
@@ -401,7 +401,7 @@ export default {
     /* 编辑节点 */
     editNode(node, { ChartClassifyName,ChartClassifyId }) {
 
-      this.dialog_title = '编辑';
+      this.dialog_title = '编辑图表分类';
       /* 编辑目录 */
       this.classifyForm = {
         classify_name: ChartClassifyName,

+ 2 - 2
src/views/chartRelevance_manage/list.vue

@@ -461,7 +461,7 @@ export default {
 
     /* 添加一级目录 */
     addLevelOneHandle() {
-      this.dialog_title = "添加";
+      this.dialog_title = "添加图表分类";
       this.classifyForm = {
         classify_name: "",
       };
@@ -470,7 +470,7 @@ export default {
 
     /* 编辑节点 */
     editNode(node, { ChartClassifyName, ChartClassifyId }) {
-      this.dialog_title = "编辑";
+      this.dialog_title = "编辑图表分类";
       /* 编辑目录 */
       this.classifyForm = {
         classify_name: ChartClassifyName,

+ 8 - 0
src/views/chartRelevance_manage/relevanceChartEditor.vue

@@ -376,6 +376,14 @@ export default {
       };
     },
   },
+  beforeRouteEnter(to, from, next) {
+    if(to.query.code){
+      to.matched[1].name='编辑图表'
+    }else{
+      to.matched[1].name='添加图表'
+    }
+    next()
+  },
   data() {
     return {
       chart_code: this.$route.query.code || '',

+ 8 - 0
src/views/chartRelevance_manage/statisticFeatureChartEditor.vue

@@ -586,6 +586,14 @@ export default {
   },
   destroyed() {
     window.removeEventListener('resize', this.reloadRightWid);
+  },
+  beforeRouteEnter(to, from, next) {
+    if(to.query.code){
+      to.matched[1].name='编辑图表'
+    }else{
+      to.matched[1].name='添加图表'
+    }
+    next()
   }
 };
 </script>

+ 2 - 2
src/views/chartRelevance_manage/statisticFeatureList.vue

@@ -370,7 +370,7 @@ export default {
 
 		/* 添加一级目录 */
 		addLevelOneHandle() {
-			this.dialog_title = '添加';
+			this.dialog_title = '添加图表分类';
 			this.classifyForm = {
 				classify_name: '',
 			}
@@ -380,7 +380,7 @@ export default {
     /* 编辑节点 */
     editNode(node, { ChartClassifyName,ChartClassifyId }) {
 
-      this.dialog_title = '编辑';
+      this.dialog_title = '编辑图表分类';
       /* 编辑目录 */
       this.classifyForm = {
         classify_name: ChartClassifyName,

+ 1 - 1
src/views/classify_manage/classifyEnlist.vue

@@ -343,7 +343,7 @@ export default {
 
     editHandle({ClassifyName,Id,ParentId,Sort,ClassifyType}) {
       this.classifyForm = {
-        title: '编辑英文分类',
+        title: '编辑分类',
         show: true,
         classify_name: ClassifyName,
         parent_id: ParentId,

+ 2 - 2
src/views/classify_manage/classifylist.vue

@@ -57,10 +57,10 @@
 		  	</el-col>
 		</el-card>
 		<!-- 添加分类弹框 -->
-		<el-dialog :modal-append-to-body='false' :title="isadd?'新增分类':'编辑分类'" :visible.sync="aeDialog" :close-on-click-modal="false" :center="true" v-dialogDrag custom-class="dialogclassLog" width="700px">
+		<el-dialog :modal-append-to-body='false' :title="isadd?'添加分类':'编辑分类'" :visible.sync="aeDialog" :close-on-click-modal="false" :center="true" v-dialogDrag custom-class="dialogclassLog" width="700px">
 			<div slot="title" style="display:flex;alignItems:center;">
 				<img :src="isadd?$icons.add:$icons.edit" style="color:#fff;width:16px;height:16px;marginRight:5px;">
-				<span style="fontSize:16px;">{{isadd?'新增分类':'编辑分类'}}</span>
+				<span style="fontSize:16px;">{{isadd?'添加分类':'编辑分类'}}</span>
 			</div>
 			<el-form :model="aeForm" :rules="aerules" ref="aeForm" label-position="right" label-width="140px" class="demo-aeForm" id="login-container" @submit.native.prevent>
 				<el-form-item prop="classify_name" label="分类名称">

+ 1 - 1
src/views/dataEntry_manage/databaseComponents/addTargetDiaBase.vue

@@ -4,7 +4,7 @@
 			@close="cancelHandle" custom-class="dialog" top="11vh" center width="1200px" v-dialogDrag>
 			<div slot="title" style="display:flex;alignItems:center;">
 				<img :src="$icons.add" style="color:#fff;width:16px;height:16px;marginRight:5px;">
-				<span style="fontSize:16px;">新增指标</span>
+				<span style="fontSize:16px;">添加指标</span>
 			</div>
 			<div class="dialog-top">
 				<div>

+ 8 - 0
src/views/dataEntry_manage/onlineExcelCopy.vue

@@ -185,6 +185,14 @@ created() {
       luckysheet.create(this.options)
     })
   },
+  beforeRouteEnter(to, from, next){
+    if(to.query.isEdit=='true'){
+      to.matched[1].name='编辑excel数据'
+    }else{
+      to.matched[1].name='复制excel数据'
+    }
+    next()
+  },
   beforeRouteLeave(to, from, next) {
     luckysheet.destroy()
     next();

+ 1 - 1
src/views/dataEntry_manage/targetList.vue

@@ -519,7 +519,7 @@ export default {
 				up_time = '';
 				up_day = '';
 			}
-				this.editTitle="修改指标名称";
+				this.editTitle="编辑指标";
 				this.editFormData = {
 					type:item.ClassifyName,
 					frequency:item.Frequency,

+ 8 - 0
src/views/datasheet_manage/customSheetEdit.vue

@@ -82,6 +82,14 @@ import CustomTable from './components/CustomTable.vue'
 import html2canvas from 'html2canvas';
 export default {
   components: { selectTarget,CustomTable },
+  beforeRouteEnter(to, from, next) {
+    if(to.query.id){
+      to.matched[1].name=`编辑表格`
+    }else{
+      to.matched[1].name='添加表格'
+    }
+    next()
+  },
   data() {
     return {
       sheetId: this.$route.query.id || '',

+ 8 - 0
src/views/datasheet_manage/mixedSheetEdit.vue

@@ -61,6 +61,14 @@ import MixedTable from './components/MixedTable.vue'
 import html2canvas from 'html2canvas';
 export default {
   components: { selectTarget,MixedTable },
+  beforeRouteEnter(to, from, next) {
+    if(to.query.id){
+      to.matched[1].name=`编辑表格`
+    }else{
+      to.matched[1].name='添加表格'
+    }
+    next()
+  },
   data() {
     return {
       sheetId: this.$route.query.id || '',

+ 16 - 0
src/views/futures_manage/chartEditor.vue

@@ -580,6 +580,22 @@ export default {
 	},
 	destroyed() {
 		window.removeEventListener('resize', this.reloadRightWid);
+	},
+	beforeRouteEnter(to, from, next) {
+		if(to.query.code){
+			if(to.query.scence=='price'){
+				to.matched[1].name='编辑价格曲线'
+			}else{
+				to.matched[1].name='编辑利润曲线'
+			}
+		}else{
+			if(to.query.scence=='price'){
+				to.matched[1].name='添加价格曲线'
+			}else{
+				to.matched[1].name='添加利润曲线'
+			}
+		}
+		next()
 	}
 };
 </script>

+ 2 - 1
src/views/futures_manage/commodityChartBase.vue

@@ -745,7 +745,8 @@ export default {
 			this.$router.push({
         path: '/addCommodityChart',
         query: {
-          code: this.chartInfo.UniqueCode
+          code: this.chartInfo.UniqueCode,
+		  scence:this.chartInfo.Source==2?'price':'profit'
         }
       })
 		},

+ 112 - 0
src/views/ppt_manage/newVersion/components/editor/InsertSemantics.vue

@@ -0,0 +1,112 @@
+<template>
+    <div class="import-mychart-wrap">
+        <div>
+            <el-input
+				placeholder="关键词搜索"
+				v-model="keyword"
+				size="medium"
+				prefix-icon="el-icon-search"
+			/>
+		</div>
+		<div class="list" v-infinite-scroll="load" v-if="list.length>0">
+            <div class="item" v-for="item in list" :key="item.SaCompareId" @click="handleClickItem(item)">
+                <p>{{ item.Title }}</p>
+                <img :src="item.PicUrl" alt="">
+            </div>
+		</div>
+        <div v-if="list.length==0" class="empty-box">
+            无数据
+        </div>
+    </div>
+</template>
+
+<script>
+import {semanticInterface} from '@/api/modules/semanticsApi.js';
+export default {
+    data() {
+        return {
+            keyword:'',
+            pageSize:20,
+			CurrentIndex: 1,
+			list:[],
+            loading:false,
+            finished:false,
+
+        }
+    },
+    mounted(){
+        this.handleGetList()
+    },  
+    methods: {
+		async handleGetList(){
+            this.loading=true
+            const res=await semanticInterface.compareSearch({
+				PageSize: this.pageSize,
+				CurrentIndex: this.CurrentIndex,
+				Keyword: this.keyword
+			})
+            this.loading=false
+            let arr=res.Data.List||[]
+            arr=arr.map(item => {
+               return {
+                   ...item,
+                   PicUrl:item.ResultImg
+               } 
+            });
+
+            this.list=[...this.list,...arr]
+            if(!res.Data){
+                this.finished=true
+            }
+            if(res.Data&&res.Data.Paging.IsEnd){
+                this.finished=true
+            }
+		},
+
+        load(){
+            if(this.finished) return
+            this.CurrentIndex++
+            this.handleGetList()
+        },
+
+        handleClickItem(item){
+           this.$parent.chooseChart(item,'sandImage')
+        }
+    },
+}
+</script>
+
+<style lang="scss" scoped>
+.import-mychart-wrap{
+    .list{
+        height: calc(100vh - 320px);
+        overflow-x: hidden;
+		overflow-y: auto;
+        .item{
+            width: 100%;
+            margin: 20px 0;
+            padding: 20px;
+            box-sizing: border-box;
+            border: 1px solid #eaeaea;
+            border-radius: 10px;
+            position: relative;
+            overflow: hidden;
+            p{
+                text-align: center;
+                font-size: 16px;
+                margin-bottom: 10px;
+                color: #5882EF;
+            }
+            img{
+                width: 100%;
+            }
+        }
+    }
+    .empty-box{
+        height: calc(100vh - 320px);
+        text-align: center;
+        color: #999;
+        padding-top: 100px;
+    }
+}
+</style>

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

@@ -175,6 +175,9 @@
               <div v-show="tabsactive == 'MyETA批量'" class="chart-tool flex-column">
                 <insert-charts @handleImportMyChart="handleImportMyChart"/>
               </div>
+              <div v-show="tabsactive == '语义分析插入'" class="chart-tool flex-column">
+                <InsertSemantics />
+              </div>
             </div>
             <!-- 图层编辑 -->
             <div class="layer-edit-box" v-else>
@@ -285,6 +288,7 @@ import InsertPageDialog from './components/editor/InsertPageDialog.vue';
 import addMyClassifyDia from '@/views/dataEntry_manage/components/addMyClassifyDia';
 import InsertCharts from './components/editor/InsertCharts.vue';
 import ContextMenu from './components/ContextMenu.vue';
+import InsertSemantics from './components/editor/InsertSemantics.vue';
 export default {
   mixins:[pptmixin,//ppt页面共同逻辑
           mixins,//图表加载逻辑
@@ -293,7 +297,7 @@ export default {
           ],
   components: { 
         IndexItem, ChooseCover, AddFormat,ShapePreview,
-    LayerEditTool,DeletePageDialog,ChangeFormatDialog,InsertPageDialog,addMyClassifyDia,InsertCharts,ContextMenu
+    LayerEditTool,DeletePageDialog,ChangeFormatDialog,InsertPageDialog,addMyClassifyDia,InsertCharts,ContextMenu,InsertSemantics
   },
   data() {
     return {
@@ -337,7 +341,7 @@ export default {
         catalogId:0,//ppt目录id,添加ppt时需要
         ReportId:0,//ppt对应的双周报id,如果没转过,则为0
         isChartLoading:false,//是否正在加载图表/图片
-        panelTabs: [ '图表','MyETA批量','沙盘','表格' ],
+        panelTabs: [ '图表','MyETA批量','沙盘','表格','语义分析插入' ],
         sheetSearchList:[],
         sheetSearchObj: {
           Keyword:''

+ 7 - 2
src/views/ppt_manage/newVersion/pptEnEditor.vue

@@ -179,6 +179,9 @@
                   :showEnMark="true"
                   />
               </div>
+              <div v-show="tabsactive == '语义分析插入'" class="chart-tool flex-column">
+                <InsertSemantics />
+              </div>
             </div>
             <!-- 图层编辑 -->
             <div class="layer-edit-box" v-else>
@@ -297,6 +300,7 @@ import addMyClassifyDia from '@/views/dataEntry_manage/components/addMyClassifyD
 import InsertCharts from './components/editor/InsertCharts.vue';
 import setEnNameDia from '@/views/dataEntry_manage/components/setEnNameDia.vue';
 import ContextMenu from './components/ContextMenu.vue';
+import InsertSemantics from './components/editor/InsertSemantics.vue';
 export default {
   mixins:[pptmixin,//ppt页面共同逻辑
           mixins,//图表加载逻辑
@@ -315,7 +319,8 @@ export default {
     setEnNameDia,
     addMyClassifyDia,
     InsertCharts,
-    ContextMenu
+    ContextMenu,
+    InsertSemantics
   },
   data() {
     return {
@@ -359,7 +364,7 @@ export default {
         catalogId:0,//ppt目录id,添加ppt时需要
         ReportId:0,//ppt对应的双周报id,如果没转过,则为0
         isChartLoading:false,//是否正在加载图表/图片
-        panelTabs: [ '图表','MyETA批量','沙盘','表格' ],
+        panelTabs: [ '图表','MyETA批量','沙盘','表格','语义分析插入' ],
         sheetSearchList:[],
         sheetSearchObj: {
           Keyword:''

+ 93 - 4
src/views/report_manage/addreportNew.vue

@@ -48,6 +48,12 @@
 					@click.native="clickreportadd('cg')"
 					>存草稿</el-button
 				>
+				<el-button
+					type="primary"
+					size="medium"
+					@click.native="clickreportadd('dsfb')"
+					>定时发布</el-button
+				>
 				<el-button
 					type="primary"
 					size="medium"
@@ -293,8 +299,38 @@
 				<div v-if="tabsactive == 'MyETA批量插入'">
 					<importMyChart @handleImportMyChart="handleImportMyChart"/>
 				</div>
+				<div v-if="tabsactive == '语义分析插入'">
+					<importSemantics @handleImportSemantic="(item)=>insertHtml(item,'image')"/>
+				</div>
 			</div>
 		</div>
+
+		<!-- 定时发布弹窗 -->
+		<el-dialog 
+			v-dialogDrag 
+			:append-to-body="true" 
+			:visible.sync="showDSFB" 
+			width="500px" 
+			title="定时发布"
+		>
+			<div>
+				<div>
+					<span>发送时间</span>
+					<el-date-picker
+						v-model="taskTime"
+						type="datetime"
+						placeholder="选择日期时间"
+						value-format="yyyy-MM-dd HH:mm:ss"
+						:picker-options="timePickerOpt"
+					/>
+				</div>
+				<p style="margin:15px 0">设置成功之后,研报将定时进行发送。</p>
+				<div style="text-align:right;margin:20px 0">
+					<el-button type="primary" plain @click="showDSFB=false">取消</el-button>
+					<el-button type="primary" @click="handleSetReportPrepublish">确定</el-button>
+				</div>
+			</div>
+		</el-dialog>
 	</div>
 </template>
 
@@ -309,7 +345,8 @@ import {
 	reportauthor,
 	getDraft,
 	dataBaseInterface,
-	sandInterface
+	sandInterface,
+	reportSetPrepublish
 } from '@/api/api.js';
 import http from '@/api/http.js';
 import VueFroala from 'vue-froala-wysiwyg';
@@ -317,6 +354,7 @@ import urlSlug from 'url-slug';
 import mixinMsg from './mixins/messagePush'
 import reportMixin from './mixins/reportMixin';
 import importMyChart from './components/importMyChart.vue'
+import importSemantics from './components/importSemantics.vue';
 export default {
 	mixins:[mixinMsg,reportMixin],
 	data() {
@@ -595,7 +633,7 @@ export default {
 						this.isMessagePost = false; 
 						this.reporteditMsg(params2,tp)
 					}else{
-						this.$confirm('发布后,是否推送模板消息和客户群?', '发布提示', {
+						this.$confirm('发布后,是否推送模板消息?', '发布提示', {
 								confirmButtonText: '推送',
 								cancelButtonText: '不推送',
 								type: 'warning',
@@ -629,7 +667,7 @@ export default {
 						this.isMessagePost = false; 
 						this.reportaddMsg(params,tp)
 					}else{
-						this.$confirm('发布后,是否推送模板消息和客户群?', '发布提示', {
+						this.$confirm('发布后,是否推送模板消息?', '发布提示', {
 								confirmButtonText: '推送',
 								cancelButtonText: '不推送',
 								type: 'warning',
@@ -667,6 +705,57 @@ export default {
 				}
 			});
 		},
+		// 定时发布报告
+		handleSetReportPrepublish(){
+			if(!this.taskTime){
+				this.$message.warning('请选择定时发布的时间')
+				return
+			}
+			const now=this.$moment().format('YYYY-MM-DD HH:mm:ss')
+			console.log(now);
+			console.log(this.taskTime);
+			if(this.$moment(this.taskTime).isBefore(now,'second')){
+				this.$message.warning('定时发布不得早于当前时间')
+				return
+			}
+			console.log('定时去发布了');
+			this.$confirm('是否发布定时报告,并推送模板消息?', '发布提示', {
+				confirmButtonText: '推送',
+				cancelButtonText: '不推送',
+				type: 'warning',
+				distinguishCancelAndClose:true,
+				beforeClose:(action, instance,done)=>{
+					console.log(action, instance);
+					if(action==='close'||action==='cancel') {
+						//右上角或者不推送
+						reportSetPrepublish({
+							ReportId:Number(this.report_draft_id),
+							PrePublishTime:this.taskTime,
+							PreMsgSend:0,
+						}).then(res=>{
+							if(res.Ret===200){
+								this.$message.success('定时发布成功!')
+								this.$router.push({ path: '/reportlist' });
+							}
+						})
+					} else {
+						//confirmButton
+						reportSetPrepublish({
+							ReportId:Number(this.report_draft_id),
+							PrePublishTime:this.taskTime,
+							PreMsgSend:1,
+						}).then(res=>{
+							if(res.Ret===200){
+								this.$message.success('定时发布成功!')
+								this.$router.push({ path: '/reportlist' });
+							}
+						})
+					}
+					done()
+				}
+			})
+
+		},
 		//批量插入我的图表
 		handleImportMyChart(data){
 			//设置编辑器获取焦点
@@ -784,7 +873,7 @@ export default {
 			});
 		},
 	},
-	components: {importMyChart},
+	components: {importMyChart,importSemantics},
 	watch: {
 		'aeForm.add_type'(to, from) {
 			if (from == 2 && to == 1) {

+ 112 - 0
src/views/report_manage/components/importSemantics.vue

@@ -0,0 +1,112 @@
+<template>
+    <div class="import-mychart-wrap">
+        <div>
+            <el-input
+				placeholder="关键词搜索"
+				v-model="keyword"
+				size="medium"
+				prefix-icon="el-icon-search"
+			/>
+		</div>
+		<div class="list" v-infinite-scroll="load" v-if="list.length>0">
+            <div class="item" v-for="item in list" :key="item.SaCompareId" @click="handleClickItem(item)">
+                <p>{{ item.Title }}</p>
+                <img :src="item.PicUrl" alt="">
+            </div>
+		</div>
+        <div v-if="list.length==0" class="empty-box">
+            无数据
+        </div>
+    </div>
+</template>
+
+<script>
+import {semanticInterface} from '@/api/modules/semanticsApi.js';
+export default {
+    data() {
+        return {
+            keyword:'',
+            pageSize:20,
+			CurrentIndex: 1,
+			list:[],
+            loading:false,
+            finished:false,
+
+        }
+    },
+    mounted(){
+        this.handleGetList()
+    },  
+    methods: {
+		async handleGetList(){
+            this.loading=true
+            const res=await semanticInterface.compareSearch({
+				PageSize: this.pageSize,
+				CurrentIndex: this.CurrentIndex,
+				Keyword: this.keyword
+			})
+            this.loading=false
+            let arr=res.Data.List||[]
+            arr=arr.map(item => {
+               return {
+                   ...item,
+                   PicUrl:item.ResultImg
+               } 
+            });
+
+            this.list=[...this.list,...arr]
+            if(!res.Data){
+                this.finished=true
+            }
+            if(res.Data&&res.Data.Paging.IsEnd){
+                this.finished=true
+            }
+		},
+
+        load(){
+            if(this.finished) return
+            this.CurrentIndex++
+            this.handleGetList()
+        },
+
+        handleClickItem(item){
+           this.$emit('handleImportSemantic',item)
+        }
+    },
+}
+</script>
+
+<style lang="scss" scoped>
+.import-mychart-wrap{
+    .list{
+        height: calc(100vh - 320px);
+        overflow-x: hidden;
+		overflow-y: auto;
+        .item{
+            width: 100%;
+            margin: 20px 0;
+            padding: 20px;
+            box-sizing: border-box;
+            border: 1px solid #eaeaea;
+            border-radius: 10px;
+            position: relative;
+            overflow: hidden;
+            p{
+                text-align: center;
+                font-size: 16px;
+                margin-bottom: 10px;
+                color: #5882EF;
+            }
+            img{
+                width: 100%;
+            }
+        }
+    }
+    .empty-box{
+        height: calc(100vh - 320px);
+        text-align: center;
+        color: #999;
+        padding-top: 100px;
+    }
+}
+</style>

+ 1 - 1
src/views/report_manage/dayOrWeek.vue

@@ -119,7 +119,7 @@ export default {
         if(to.query.type){
             to.matched[1].name=`编辑${to.query.type=='day'?'晨报':'周报'}`
         }else{
-            to.matched[1].name='编辑晨报/周报'
+            to.matched[1].name='添加晨报/周报'
         }
         next()
     },

+ 15 - 25
src/views/report_manage/editChapterReport.vue

@@ -62,30 +62,9 @@
         "
       >
         <div id="tabs">
-          <p
-            @click="tabsactive = '基础信息'"
-            :class="{ active: tabsactive == '基础信息' ? true : false }"
-          >
-            基础信息
-          </p>
-          <p
-            @click="tabsactive = '图表插入'"
-            :class="{ active: tabsactive == '图表插入' ? true : false }"
-          >
-            图表插入
-          </p>
-          <p
-            @click="tabsactive = 'MyETA批量插入'"
-            :class="{ active: tabsactive == 'MyETA批量插入' ? true : false }"
-          >
-            MyETA插入
-          </p>
-          <p
-            @click="tabsactive = '沙盘插入'"
-            :class="{ active: tabsactive == '沙盘插入' ? true : false }"
-          >
-            沙盘插入
-          </p>
+          <el-tabs v-model="tabsactive">
+            <el-tab-pane :label="tab" :name="tab" v-for="tab in weekPanelTabs" :key="tab"></el-tab-pane>
+          </el-tabs>
         </div>
         <div
           v-if="tabsactive == '基础信息'"
@@ -294,6 +273,9 @@
         <div v-if="tabsactive == 'MyETA批量插入'">
           <importMyChart @handleImportMyChart="handleImportMyChart" />
         </div>
+        <div v-if="tabsactive == '语义分析插入'">
+					<importSemantics @handleImportSemantic="(item)=>insertHtml(item,'image')"/>
+				</div>
       </div>
     </div>
   </div>
@@ -326,6 +308,7 @@ import http from "@/api/http.js";
 import mixinMsg from "./mixins/messagePush";
 import moment from "moment";
 import importMyChart from "./components/importMyChart.vue";
+import importSemantics from './components/importSemantics.vue';
 let ALOSSINS = null; //阿里云上传实例
 export default {
   beforeRouteEnter(to, from, next) {
@@ -340,6 +323,13 @@ export default {
   data() {
     var that = this;
     return {
+      weekPanelTabs:[
+        "基础信息",
+        "图表插入",
+        "MyETA批量插入",
+        "沙盘插入",
+        "语义分析插入"
+      ],
       //批量导入图表
       importChartNum: 0, //批量导入图表的数量 如果大于0则说明在加载
 
@@ -1047,7 +1037,7 @@ export default {
       }
     },
   },
-  components: { importMyChart },
+  components: { importMyChart,importSemantics },
 };
 </script>
 

+ 105 - 2
src/views/report_manage/editreportNew.vue

@@ -48,6 +48,12 @@
 					@click.native="clickreportadd('cg')"
 					>存草稿</el-button
 				>
+				<el-button
+					type="primary"
+					size="medium"
+					@click.native="clickreportadd('dsfb')"
+					>定时发布</el-button
+				>
 				<el-button
 					type="primary"
 					size="medium"
@@ -290,8 +296,38 @@
 				<div v-if="tabsactive == 'MyETA批量插入'">
 					<importMyChart @handleImportMyChart="handleImportMyChart"/>
 				</div>
+				<div v-if="tabsactive == '语义分析插入'">
+					<importSemantics @handleImportSemantic="(item)=>insertHtml(item,'image')"/>
+				</div>
 			</div>
 		</div>
+
+		<!-- 定时发布弹窗 -->
+		<el-dialog 
+			v-dialogDrag 
+			:append-to-body="true" 
+			:visible.sync="showDSFB" 
+			width="500px" 
+			title="定时发布"
+		>
+			<div>
+				<div>
+					<span>发送时间</span>
+					<el-date-picker
+						v-model="taskTime"
+						type="datetime"
+						placeholder="选择日期时间"
+						value-format="yyyy-MM-dd HH:mm:ss"
+						:picker-options="timePickerOpt"
+					/>
+				</div>
+				<p style="margin:15px 0">设置成功之后,研报将定时进行发送。</p>
+				<div style="text-align:right;margin:20px 0">
+					<el-button type="primary" plain @click="showDSFB=false">取消</el-button>
+					<el-button type="primary" @click="handleSetReportPrepublish">确定</el-button>
+				</div>
+			</div>
+		</el-dialog>
 	</div>
 </template>
 
@@ -305,7 +341,8 @@ import {
 	reportauthor,
 	classifyIdDetail,
 	dataBaseInterface,
-	sandInterface
+	sandInterface,
+	reportSetPrepublish
 } from 'api/api.js';
 import VueFroala from 'vue-froala-wysiwyg';
 import urlSlug from 'url-slug';
@@ -313,6 +350,7 @@ import http from '@/api/http.js';
 import mixinMsg from './mixins/messagePush'
 import reportMixin from './mixins/reportMixin';
 import importMyChart from './components/importMyChart.vue'
+import importSemantics from './components/importSemantics.vue';
 export default {
 	mixins:[mixinMsg,reportMixin],
 	data() {
@@ -659,6 +697,71 @@ export default {
 				}
 			});
 		},
+		// 定时发布报告
+		handleSetReportPrepublish(){
+			if(!this.taskTime){
+				this.$message.warning('请选择定时发布的时间')
+				return
+			}
+			const now=this.$moment().format('YYYY-MM-DD HH:mm:ss')
+			console.log(now);
+			console.log(this.taskTime);
+			if(this.$moment(this.taskTime).isBefore(now,'second')){
+				this.$message.warning('定时发布不得早于当前时间')
+				return
+			}
+			console.log('定时去发布了');
+			// 如果改报告已经推送过模板消息
+			if(this.ThsMsgIsSend==1){
+				reportSetPrepublish({
+					ReportId:Number(this.report_id),
+					PrePublishTime:this.taskTime,
+					PreMsgSend:0,
+				}).then(res=>{
+					if(res.Ret===200){
+						this.$message.success('定时发布成功!')
+						this.$router.push({ path: '/reportlist' });
+					}
+				})
+				return
+			}
+			this.$confirm('是否发布定时报告,并推送模板消息?', '发布提示', {
+				confirmButtonText: '推送',
+				cancelButtonText: '不推送',
+				type: 'warning',
+				distinguishCancelAndClose:true,
+				beforeClose:(action, instance,done)=>{
+					console.log(action, instance);
+					if(action==='close'||action==='cancel') {
+						//右上角或者不推送
+						reportSetPrepublish({
+							ReportId:Number(this.report_id),
+							PrePublishTime:this.taskTime,
+							PreMsgSend:0,
+						}).then(res=>{
+							if(res.Ret===200){
+								this.$message.success('定时发布成功!')
+								this.$router.push({ path: '/reportlist' });
+							}
+						})
+					} else {
+						//confirmButton
+						reportSetPrepublish({
+							ReportId:Number(this.report_id),
+							PrePublishTime:this.taskTime,
+							PreMsgSend:1,
+						}).then(res=>{
+							if(res.Ret===200){
+								this.$message.success('定时发布成功!')
+								this.$router.push({ path: '/reportlist' });
+							}
+						})
+					}
+					done()
+				}
+			})
+
+		},
 		//批量插入我的图表
 		handleImportMyChart(data){
 			//设置编辑器获取焦点
@@ -775,7 +878,7 @@ export default {
 			});
 		},
 	},
-	components: {importMyChart},
+	components: {importMyChart,importSemantics},
 };
 </script>
 

+ 4 - 2
src/views/report_manage/mixins/messagePush.js

@@ -26,7 +26,8 @@ export default {
             } else {
               this.publishreport(res.Data.ReportId);
             }
-          } else {
+          } else if(tp=='dsfb'){
+            this.showDSFB=true
             // this.$router.push({path:'/reportlist'});
           }
         }
@@ -53,7 +54,8 @@ export default {
             } else {
               this.publishreport(res.Data.ReportId);
             }
-          } else {
+          } else if(tp=='dsfb'){
+            this.showDSFB=true
             // this.$router.push({path:'/reportlist'});
           }
           //已经添加过报告

+ 26 - 0
src/views/report_manage/mixins/reportMixin.js

@@ -7,6 +7,22 @@ import {
   statisticFeatureInterface,
 } from "@/api/modules/chartRelevanceApi";
 export default {
+  watch:{
+    'taskTime'(){
+			const date = this.$moment(this.taskTime).startOf('day').format('x');
+	        const nowDate = this.$moment().startOf('day').format('x');
+	        // 如果选择的是今天 则需要禁用已经过去的时间节点
+	        if (date <= nowDate) {
+	            // 默认选择的最新时间 是当前时间的两分钟后 (留出2分钟的富裕时间)
+	            this.timePickerOpt.selectableRange = (
+	                `${this.$moment().add(2,'m').format('HH:mm:ss')} - 23:59:59`
+	            );
+	        }else {
+				// 如果是以后的日期,则不需要禁用时间节点
+	            this.timePickerOpt.selectableRange = '00:00:00 - 23:59:59';
+	        }
+		},
+  },
   data() {
     let that = this;
     return {
@@ -139,6 +155,7 @@ export default {
         "MyETA批量插入",
         "表格插入",
         "沙盘插入",
+        "语义分析插入"
       ],
 
       sheetSearchObj: {},
@@ -163,6 +180,15 @@ export default {
 
       isShowMe: false,
       autoSaveFlag: true, //是否开启自动保存
+
+      showDSFB:false,//显示定时发布弹窗
+			taskTime:'',//定时发布的时间
+			timePickerOpt:{
+				disabledDate(e){
+					return e.getTime()< new Date().getTime()-24 * 60 * 60 * 1000
+				},
+				selectableRange:'00:00:00 - 23:59:59'
+			},
     };
   },
 

+ 99 - 2
src/views/report_manage/reportEn/reportEditor.vue

@@ -63,6 +63,12 @@
 					@click.native="clickreportadd('cg')"
 					>存草稿</el-button
 				>
+				<el-button
+					type="primary"
+					size="medium"
+					@click.native="clickreportadd('dsfb')"
+					>定时发布</el-button
+				>
 				<el-button
 					type="primary"
 					size="medium"
@@ -299,6 +305,9 @@
 				<div v-if="tabsactive == 'MyETA批量插入'">
 					<importMyChart @handleImportMyChart="handleImportMyChart" :showEnMark="true" />
 				</div>
+				<div v-if="tabsactive == '语义分析插入'">
+					<importSemantics @handleImportSemantic="(item)=>insertHtml(item,'image')"/>
+				</div>
 			</div>
 		</div>
 
@@ -313,6 +322,33 @@
       :edblist="enChartInfo.ChartType===10?enEdblist:[]"
 		/>
 
+		<!-- 定时发布弹窗 -->
+		<el-dialog 
+			v-dialogDrag 
+			:append-to-body="true" 
+			:visible.sync="showDSFB" 
+			width="500px" 
+			title="定时发布"
+		>
+			<div>
+				<div>
+					<span>发送时间</span>
+					<el-date-picker
+						v-model="taskTime"
+						type="datetime"
+						placeholder="选择日期时间"
+						value-format="yyyy-MM-dd HH:mm:ss"
+						:picker-options="timePickerOpt"
+					/>
+				</div>
+				<p style="margin:15px 0">设置成功之后,研报将定时进行发送。</p>
+				<div style="text-align:right;margin:20px 0">
+					<el-button type="primary" plain @click="showDSFB=false">取消</el-button>
+					<el-button type="primary" @click="handleConfirmDSFB">确定</el-button>
+				</div>
+			</div>
+		</el-dialog>
+
 	</div>
 </template>
 
@@ -329,6 +365,7 @@ import mixinMsg from '../mixins/messagePush'
 import reportMixin from '../mixins/reportMixin';
 import importMyChart from '../components/importMyChart.vue'
 import setEnNameDia from '@/views/dataEntry_manage/components/setEnNameDia.vue'
+import importSemantics from '../components/importSemantics.vue';
 export default {
 	mixins:[mixinMsg,reportMixin],
 	data() {
@@ -438,9 +475,26 @@ export default {
         language: "zh_cn",
         //允许粘贴的样式
         pasteAllowedStyleProps: ['font-family', 'font-size', 'color']
-      }
+      },
+
+			showDSFB:false,//显示定时发布弹窗
+			taskTime:'',//定时发布的时间
+			timePickerOpt:{
+				disabledDate(e){
+					return e.getTime()< new Date().getTime()-24 * 60 * 60 * 1000
+				},
+				selectableRange:'00:00:00 - 23:59:59'
+			},
 		};
 	},
+	beforeRouteEnter(to, from, next) {
+        if(to.query.id){
+            to.matched[1].name=`编辑英文研报`
+		}else{
+			to.matched[1].name=`添加英文研报`
+		}
+        next()
+    },
 	mounted() {
 		this.$route.query.id && this.getreportdetail();
 		this.getclassifylist();
@@ -472,6 +526,20 @@ export default {
 			this.$refs.sandTable.scrollTop=0
 			this.sandTabelQuery.CurrentIndex = 1
 			this.getSandTable()
+		},
+		'taskTime'(){
+			const date = this.$moment(this.taskTime).startOf('day').format('x');
+	        const nowDate = this.$moment().startOf('day').format('x');
+	        // 如果选择的是今天 则需要禁用已经过去的时间节点
+	        if (date <= nowDate) {
+	            // 默认选择的最新时间 是当前时间的两分钟后 (留出2分钟的富裕时间)
+	            this.timePickerOpt.selectableRange = (
+	                `${this.$moment().add(2,'m').format('HH:mm:ss')} - 23:59:59`
+	            );
+	        }else {
+				// 如果是以后的日期,则不需要禁用时间节点
+	            this.timePickerOpt.selectableRange = '00:00:00 - 23:59:59';
+	        }
 		}
 	},
 	methods: {
@@ -673,7 +741,12 @@ export default {
 					});
 					window.open(href, "_blank");
 				} else if (tp === "fb") {
+					this.$confirm('是否确定立即发布报告?','提示',{type: 'warning'}).then(()=>{
 						this.publishreport(this.report_id);
+					})
+				}else if(tp==='dsfb'){
+					//定时发布
+					this.showDSFB=true
 				}
 			// if (tp == 'yl') { //预览
 			// 	sessionStorage.setItem('reportdtl', JSON.stringify(params));
@@ -697,6 +770,30 @@ export default {
 			});
 		},
 
+		//定时发布报告
+		handleConfirmDSFB(){
+			if(!this.taskTime){
+				this.$message.warning('请选择定时发布的时间')
+				return
+			}
+			const now=this.$moment().format('YYYY-MM-DD HH:mm:ss')
+			console.log(now);
+			console.log(this.taskTime);
+			if(this.$moment(this.taskTime).isBefore(now,'second')){
+				this.$message.warning('定时发布不得早于当前时间')
+				return
+			}
+			reportEnInterface.enReportPrepblish({
+				ReportId:this.report_id,
+				PrePublishTime:this.taskTime
+			}).then(res=>{
+				if(res.Ret===200){
+					this.$message.success('定时发布成功!')
+					this.$router.push({ path: '/reportEnList' });
+				}
+			})
+		},
+
 		//批量插入我的图表
 		handleImportMyChart(data){
 			//设置编辑器获取焦点
@@ -816,7 +913,7 @@ export default {
 			});
 		},
 	},
-	components: {importMyChart,setEnNameDia},
+	components: {importMyChart,setEnNameDia,importSemantics},
 };
 </script>
 

+ 24 - 12
src/views/report_manage/reportEn/reportlist.vue

@@ -25,8 +25,8 @@
               size="medium"
               style="width:110px"
             >
-              <el-option label="发布时间" value="发布时间"></el-option>
-              <el-option label="更新时间" value="更新时间"></el-option>
+              <el-option label="发布时间" value="publish_time"></el-option>
+              <el-option label="更新时间" value="modify_time"></el-option>
             </el-select>
           </el-form-item>
           <el-form-item label="">
@@ -65,13 +65,13 @@
           <el-form-item label="">
             <el-select
               v-model.number="searchform.publishState"
-              placeholder="发布状态筛选"
+              placeholder="发布筛选"
               size="medium"
               clearable
               style="width: 140px"
             >
-              <el-option label="已发布" :value="1"></el-option>
-              <el-option label="未发布" :value="2"></el-option>
+              <el-option label="已发布" :value="2"></el-option>
+              <el-option label="未发布" :value="1"></el-option>
             </el-select>
           </el-form-item>
           <el-form-item label="">
@@ -144,6 +144,12 @@
                 <span v-if="row.PvEmail&&row.Pv" style="color:#333">/</span>
                 <span v-if="row.Pv" style="color:#333">{{row.Pv}}</span>
               </span>
+              <span v-else-if="item.key==='PublishTime'">
+                <span>{{row.PrePublishTime?row.PrePublishTime:row.PublishTime}}</span>
+                <svg v-if="row.PrePublishTime" width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+                  <path d="M15.2002 8C15.2002 4.13401 12.0662 1 8.20019 1C4.3342 1 1.20019 4.13401 1.2002 8C1.2002 11.866 4.3342 15 8.2002 15C12.0662 15 15.2002 11.866 15.2002 8ZM5.2002 10L5.2002 9L8.17491 9L11.2002 4.5L11.9073 5.20711L8.58912 10L5.2002 10Z" fill="#0052D9"/>
+                </svg>
+              </span>
 
               <span v-else-if="item.key==='handle'">
                 <template v-if="row.State===1">
@@ -340,7 +346,7 @@ export default {
   data() {
     return {
       searchform: {
-        timeType:'发布时间',
+        timeType:'publish_time',
         dateValue:[],
         frequency:'',
         classifynameArr:'',
@@ -476,7 +482,9 @@ export default {
         KeyWord:this.searchform.key_word,
         StartDate: this.searchform.dateValue ? this.searchform.dateValue[0] : '',
         EndDate: this.searchform.dateValue ? this.searchform.dateValue[1] : '',
-        EmailState:this.searchform.EmailState
+        EmailState:this.searchform.EmailState,
+        TimeType:this.searchform.timeType,
+        State:this.searchform.publishState.toString()
 			};
 			this.listLoading = true;
 			reportEnInterface.reportList(params).then(res => {
@@ -515,13 +523,17 @@ export default {
     },
 
     /* 发布报告 */
-    publishReport({Id}) {
-      reportEnInterface.reportPublish({ReportIds:String(Id)}).then(res=>{
-				if(res.Ret!==200) return
+    publishReport(item) {
+      this.$confirm(item.PrePublishTime?'该报告已设置定时发布,是否修改为立即发布?':'是否确定立即发布报告?','提示',{type: 'warning'}).then(()=>{
 
-        this.$message.success('发布成功');
-        this.getTableData();
+				reportEnInterface.reportPublish({ReportIds:String(item.Id)}).then(res=>{
+          if(res.Ret!==200) return
+          this.$message.success('发布成功');
+          this.getTableData();
+        })
+        
 			})
+      
     },
 
     /* 编辑报告 */

+ 1 - 1
src/views/report_manage/reportVariety.vue

@@ -37,7 +37,7 @@
         <!-- 品种编辑弹窗 -->
         <el-dialog 
             :modal-append-to-body='false' 
-            :title="!editBreedData.id?'新增分类':'编辑分类'" 
+            :title="!editBreedData.id?'添加品种':'编辑品种'" 
             :visible.sync="showEditBreed" 
             :close-on-click-modal="false"
             :center="true" 

+ 43 - 5
src/views/report_manage/reportlist.vue

@@ -31,6 +31,18 @@
               </a>
             </template>
           </el-form-item>
+          <el-form-item label="">
+            <el-select
+              v-model="searchform.timeType"
+              placeholder="选择时间类型"
+              size="medium"
+              style="width:110px"
+              @change="search"
+            >
+              <el-option label="发布时间" value="publish_time"></el-option>
+              <el-option label="更新时间" value="modify_time"></el-option>
+            </el-select>
+          </el-form-item>
           <el-form-item label="">
             <el-date-picker
               @change="search"
@@ -74,11 +86,24 @@
               size="medium"
             ></el-cascader>
           </el-form-item>
+          <el-form-item label="">
+            <el-select
+              v-model.number="searchform.publishState"
+              placeholder="发布筛选"
+              size="medium"
+              clearable
+              style="width: 140px"
+              @change="search"
+            >
+              <el-option label="已发布" :value="2"></el-option>
+              <el-option label="未发布" :value="1"></el-option>
+            </el-select>
+          </el-form-item>
           <el-form-item label="">
             <el-select
               @change="search"
               v-model.number="searchform.msgIsSend"
-              placeholder="状态筛选"
+              placeholder="推送消息状态"
               size="medium"
               clearable
               style="width: 140px"
@@ -90,7 +115,7 @@
           <el-form-item>
             <el-input
               @input="search"
-              placeholder="标题 / 作者"
+              placeholder="标题 / 创建人"
               v-model="searchform.key_word"
               clearable
               size="medium"
@@ -178,7 +203,14 @@
             min-width="124"
             align="center"
             :formatter="formatterColumn"
-          ></el-table-column>
+          >
+            <template slot-scope="scope">
+              <span>{{scope.row.PrePublishTime?scope.row.PrePublishTime:scope.row.PublishTime|formatTime}}</span>
+              <svg style="position: relative;top:2px" v-if="scope.row.PrePublishTime" width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+                <path d="M15.2002 8C15.2002 4.13401 12.0662 1 8.20019 1C4.3342 1 1.20019 4.13401 1.2002 8C1.2002 11.866 4.3342 15 8.2002 15C12.0662 15 15.2002 11.866 15.2002 8ZM5.2002 10L5.2002 9L8.17491 9L11.2002 4.5L11.9073 5.20711L8.58912 10L5.2002 10Z" fill="#0052D9"/>
+              </svg>
+            </template>
+          </el-table-column>
           <el-table-column
             prop="MsgSendTime"
             label="报告推送时间"
@@ -494,7 +526,7 @@
             class="el-icon-warning"
             style="font-size: 24px; color: #e6a23c; vertical-align: middle"
           ></i>
-          是否发布报告,且推送模板消息和客户群?
+          {{isDSFB?'该报告已设置定时发布,是否立即发布报告并推送模板消息?':'是否立即发布报告,并推送模板消息?'}}
         </div>
         <div style="margin-bottom: 20px; text-align: center">
           <el-button
@@ -502,7 +534,7 @@
             plain
             style="width: 100px"
             @click="handleClosePublish"
-            >取消发布</el-button
+            >取消</el-button
           >
           <el-button
             type="primary"
@@ -582,6 +614,7 @@ export default {
       listLoading: false,
       tableData: [],
       searchform: {
+        timeType:'publish_time',
         dateValue: "",
         frequency: "",
         classifynameArr: "",
@@ -589,6 +622,7 @@ export default {
         key_word: "",
         publish_sort: "desc",
         msgIsSend: "",
+        publishState:'',
       },
       batches: [],
       uploadloading: false,
@@ -609,6 +643,7 @@ export default {
       },
 
       showPublish: false,
+      isDSFB:false,//是否为定时发布
     };
   },
   mounted() {
@@ -861,6 +896,7 @@ export default {
       //发布报告
       this.batches = [];
       this.batches.push(item.Id);
+      this.isDSFB=item.PrePublishTime?true:false
 
       // 周报不需要弹窗直接发布
       // 2023/3/6 研报后台5.5中修改 周报校验是否上传了音频
@@ -986,6 +1022,8 @@ export default {
         KeyWord: this.searchform.key_word,
         MsgIsSend: this.searchform.msgIsSend,
         // PublishSort:this.searchform.publish_sort,
+        State:this.searchform.publishState,
+        TimeType:this.searchform.timeType
       };
       if (this.searchform.dateValue) {
         params.StartDate = this.searchform.dateValue[0];

+ 4 - 0
src/views/semantics_manage/semantics/components/selectFileDialog.vue

@@ -139,6 +139,10 @@ export default {
       })
       //获取选择对比文档ids 结果抛出
       if(selectKeys.length){
+        if(selectKeys.length>10){
+          this.$message.warning('最多支持选择10个文档')
+          return
+        }
         this.$emit('selectFile',selectKeys)
       }else{
         this.closeDialog()

+ 3 - 3
src/views/semantics_manage/semanticsPage.vue

@@ -125,9 +125,9 @@
             <li style="margin-left:auto;">作者:{{semanticInfo.SysAdminName}}</li>
             <li>创建时间:{{semanticInfo.CreateTime}}</li>
             <li>
-              <span @click="handleDownLoadImg">下载</span>
-              <span @click="handleCopyImg">复制到微信</span>
-              <span @click="handleCopyImg">复制到Office</span>
+              <span @click="handleDownLoadImg" style="cursor: pointer;color:#409eff;margin-right:10px">下载</span>
+              <span @click="handleCopyImg" style="cursor: pointer;color:#409eff;margin-right:10px">复制到微信</span>
+              <span @click="handleCopyImg" style="cursor: pointer;color:#409eff">复制到Office</span>
             </li>
             <li style="min-width: auto;"><el-button type="primary" @click="handleEdit('file',selectNode)">编辑</el-button></li>
           </ul>

+ 7 - 5
src/views/system_manage/dataAuthManage.vue

@@ -1,6 +1,7 @@
 <template>
-	<div class="dataAuth-container" v-if="showData">
-		<el-cascader 
+	<div class="dataAuth-container">
+		<el-cascader
+		v-model="default_user"
 		:options="classifyArr"
 		:props="classifyProp"
 		:show-all-levels="false"
@@ -10,7 +11,7 @@
 		clearable
 		@change="chooseUser"
 		/>
-		<ul class="user-list-cont">
+		<!-- <ul class="user-list-cont">
 			<li
 				v-for="item in userList"
 				:key="item.AdminId"
@@ -19,7 +20,7 @@
 			>
 				{{ item.AdminRealName }}
 			</li>
-		</ul>
+		</ul> -->
 		<div class="setting-cont" v-if="authList.length">
 			<ul class="menu_lists">
 				<li v-for="item in authList" :key="item.id" class="menu_item">
@@ -101,7 +102,8 @@ export default {
 			classifyProp:{
 				value:'ItemId',
 				label:'ItemName',
-				children:'Children'
+				children:'Children',
+				emitPath:false
 			},
 			default_user: '',
 			new_label:'',//输入框新值