Jelajahi Sumber

Merge branch 'ETA1.2.6'

cxmo 1 tahun lalu
induk
melakukan
54cd379346
34 mengubah file dengan 1395 tambahan dan 525 penghapusan
  1. 12 4
      src/App.vue
  2. 3 0
      src/assets/icons/filter.svg
  3. 60 1
      src/styles/global.scss
  4. 11 9
      src/views/Home.vue
  5. 1 1
      src/views/classify_manage/chapterSetting.vue
  6. 2 2
      src/views/classify_manage/classifylist.vue
  7. 30 20
      src/views/dataEntry_manage/adjustdata/adjustData.vue
  8. 9 2
      src/views/dataEntry_manage/databaseComponents/addTargetDiaBase.vue
  9. 21 2
      src/views/dataEntry_manage/databaseComponents/chartTrendRender.vue
  10. 9 3
      src/views/dataEntry_manage/databaseComponents/computedDialog.vue
  11. 39 8
      src/views/dataEntry_manage/databaseComponents/dataAssociateChart.vue
  12. 2 2
      src/views/dataEntry_manage/databaseComponents/operationDialog.vue
  13. 211 140
      src/views/dataEntry_manage/databaseList.vue
  14. 1 1
      src/views/dataEntry_manage/onlineExcelCopy.vue
  15. 1 1
      src/views/dataEntry_manage/thirdBase/UNdata.vue
  16. 35 8
      src/views/predictEdb_manage/addPredicEdb.vue
  17. 25 8
      src/views/predictEdb_manage/components/chartInfo.vue
  18. 1 1
      src/views/predictEdb_manage/components/childData.vue
  19. 27 27
      src/views/predictEdb_manage/mixins/mixin.js
  20. 90 15
      src/views/predictEdb_manage/predictEdb.vue
  21. 57 17
      src/views/report_manage/addreportNew.vue
  22. 2 2
      src/views/report_manage/cloudDisk.vue
  23. 57 17
      src/views/report_manage/editreportNew.vue
  24. 20 1
      src/views/report_manage/mixins/messagePush.js
  25. 39 4
      src/views/report_manage/reportEn/reportEditor.vue
  26. 157 50
      src/views/report_manage/reportEn/reportlist.vue
  27. 1 1
      src/views/report_manage/reportVariety.vue
  28. 4 0
      src/views/report_manage/reportdtl.vue
  29. 282 102
      src/views/report_manage/reportlist.vue
  30. 30 8
      src/views/smartReport/editReport.vue
  31. 132 64
      src/views/smartReport/reportList.vue
  32. 2 2
      src/views/system_manage/outlinkList.vue
  33. 2 2
      src/views/system_manage/outlinkListConfig.vue
  34. 20 0
      src/vuex/mutations.js

+ 12 - 4
src/App.vue

@@ -52,11 +52,11 @@ img {
   -ms-interpolation-mode: nearest-neighbor;
 }
 #app {
-  width: 100%;
   position: absolute;
   top: 0px;
   bottom: 0px;
-  /*   left:0; */
+  left:0;
+  right:0;
 }
 .el-submenu [class^="fa"] {
   vertical-align: baseline;
@@ -221,7 +221,7 @@ iframe {
   margin-top: 10px;
 }
 
-/*修改滚动条样式*/
+/*修改滚动条样式 chrome edge safari*/
 div::-webkit-scrollbar {
   width: 6px;
   height: 6px;
@@ -240,6 +240,10 @@ div::-webkit-scrollbar-thumb:hover {
 div::-webkit-scrollbar-corner {
   background: #666;
 }
+/*firefox*/
+div{
+    scrollbar-width: thin;
+}
 .customName:hover {
   text-decoration: underline;
 }
@@ -269,7 +273,7 @@ div::-webkit-scrollbar-corner {
   }
 }
 
-/*修改滚动条样式*/
+/*修改滚动条样式 chrome edge safari*/
 ul::-webkit-scrollbar {
   width: 6px;
   height: 6px;
@@ -288,6 +292,10 @@ ul::-webkit-scrollbar-thumb:hover {
 ul::-webkit-scrollbar-corner {
   background: #666;
 }
+/*firefox*/
+ul{
+    scrollbar-width: thin;
+}
 
 textarea {
   font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB",

+ 3 - 0
src/assets/icons/filter.svg

@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M2 3C2 2.44772 2.44772 2 3 2H13C13.5523 2 14 2.44772 14 3V4.78597L9.75 7.28597V14H6.25V7.28597L2 4.78597V3ZM13 3H3V4.21403L7.25 6.71403V13H8.75V6.71403L13 4.21403V3Z" fill="#666666"/>
+</svg>

+ 60 - 1
src/styles/global.scss

@@ -4,7 +4,7 @@ a[href="https://froala.com/wysiwyg-editor"], a[href="https://www.froala.com/wysi
 
 body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,button,input,textarea,th,td { margin:0; padding:0; }
 body{ font-size:12px; font-style:normal; font-family:"\5FAE\8F6F\96C5\9ED1", Helvetica, sans-serif,; }
-html{ overflow:auto; min-width:1000px; }
+html{ overflow:auto; /* min-width:1000px; */ }
 small{ font-size:12px; }
 h1{ font-size:18px; }
 h2{ font-size:16px; }
@@ -74,4 +74,63 @@ button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusri
   border-radius: 5px;
   color: #3994fb;
   background-color: #dcecfc;
+}
+
+//收缩目录按钮样式
+.slide-btn-icon{
+    padding: 20px 0;
+    box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.3);
+    border-radius: 5px;
+    background-color: #fff;
+    cursor: pointer;
+    position: absolute;
+    top: 50%;
+    transform: translateY(-50%);
+    z-index: 99;
+    &:hover {
+        background-color: #e0e0e0;
+    }
+}
+//图库相关-图表列表 公共样式
+.chart-list-item-wrap{
+    display: flex;
+    gap: 20px;
+    flex-wrap: wrap;
+    overflow-x: hidden;
+    .chart-list-item{
+        //width,min-width在页面内设置
+        background-color: #FFFFFF;
+        overflow: hidden;
+        border: 1px solid #EBEEF5;
+        border-radius: 4px;
+        .chart-item-top,.chart-item-bottom{
+            padding:10px;
+            text-align: left;
+        }
+        .chart-item-top{
+            //ellipsis在页面内设置
+            font-size: 16px;
+            font-weight: 600;
+            box-shadow: 0 3px 6px rgba(37, 37, 239, 0.1);
+        }
+        .chart-item-img{
+            margin:10px;
+            margin-bottom: 0;
+            height: 0;
+            padding-bottom: 67%;
+            cursor: pointer;
+        }
+        .chart-item-bottom{
+            font-size: 12px;
+            color: #666;
+        }
+    }
+}
+
+//el-dialog,适应小屏样式
+.fit-screen-dialog{
+    //max-width在页面设置
+    width:85vw;
+    margin-top:6vh;
+    margin-bottom: 0;
 }

+ 11 - 9
src/views/Home.vue

@@ -274,16 +274,14 @@
           class="content-container"
           id="displayMain"
           ref="displayMain"
-          :style="dynamicContStyle"
         >
           <el-row
             class="grid-content bg-purple-light contentc"
-            style="min-width: 900px"
+            style="min-width: 1000px"
           >
             <el-col
               :span="24"
               class="content-wrapper"
-              :style="!isHaveAside ? 'padding: 0 30px 0 0;' : ''"
             >
               <transition name="fade" mode="out-in">
                 <router-view :key="$route.fullPath"></router-view>
@@ -1029,6 +1027,7 @@ export default {
     width: 100%;
     overflow: hidden;
     background: #f5f7f9;
+    position: relative;
     .main_right_top {
       // width: 100%;
       background: #fff;
@@ -1171,15 +1170,16 @@ export default {
       margin-left: -1px;
     }
     .content-container {
-      height: calc(100vh - 90px);
+      //height: calc(100vh - 90px);
       background: #F2F6FA;
       // position: relative;
       overflow-y: auto;
       position: absolute;
-      padding-top: 22px;
-      left: 200px;
-      top: 68px;
-      right: 0;
+      //padding-top: 22px;
+      left: 0;
+      right:0;
+      top: 68px; //应该是60px 但为了留出header的box-shadow多移了8px
+      bottom: 0;
       z-index: 100;
       /*修改滚动条样式*/
       &::-webkit-scrollbar {
@@ -1206,7 +1206,9 @@ export default {
         overflow: auto;
         .content-wrapper {
           width: 100%;
-          padding: 0 30px 20px;
+          //padding-top:22px,是给header的box-shadow留出位置;
+          //padding-bottom:22px,是给内容页的滚动条留出位置
+          padding: 22px 30px;
           box-sizing: border-box;
           overflow: auto;
         }

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

@@ -262,7 +262,7 @@ import PermissionDialog from './components/PermissionDialog.vue'
 
 <style lang="scss" scoped>
   #chapter-settring-container{
-    min-height: calc(100vh - 110px);
+    min-height: calc(100vh - 120px);
     box-sizing: border-box;
     .head-buttons-zone{
       background-color: white;

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

@@ -68,7 +68,7 @@
 				<img :src="isadd?$icons.add:$icons.edit" style="color:#fff;width:16px;height:16px;marginRight:5px;">
 				<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 :model="aeForm" :rules="aerules" ref="aeForm" label-position="right" label-width="140px" class="aeForm"  @submit.native.prevent>
 				<el-form-item prop="classify_name" label="分类名称">
 					<el-input type="text" v-model="aeForm.classify_name" placeholder="请输入" size="small" style="width:400px;"></el-input>
 				</el-form-item>
@@ -938,7 +938,7 @@ export default{
 		transform: translate(-50%,-50%);
 		margin-top: 0 !important;
 		.el-dialog__body {
-			max-height: 600px;
+			height:65vh;
     		overflow-y: auto;
 		}
 	}

+ 30 - 20
src/views/dataEntry_manage/adjustdata/adjustData.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="adjust-data-container">
     <div class="wrap-top">
-      <div>
+      <div class="left-handle">
         <ul class="min-top" v-if="!edb_id">
           <li>
             <label style="margin-right:5px;">选择指标:</label>
@@ -39,7 +39,21 @@
           <span style="display:inline-block;margin-right:30px">原指标ID:{{EDBInfoOfCalculateData.FromEdbCode}}</span>
           <span>原指标名称:{{EDBInfoOfCalculateData.FromEdbName}}</span>
         </div>
-        <el-form
+      </div>
+      <div class="right-handle">
+        <div>
+          <el-button type="primary" size="medium" @click="saveSheetHandle">保存</el-button>
+          <el-button type="primary" size="medium" plain @click="$router.go(-1)">取消</el-button>
+        </div>
+        <el-tooltip>
+          <div slot="content" v-html="tips"></div>
+          <div class="tips-cont">
+            <span>使用说明</span>
+            <i class="el-icon-question" style="color: #999;"></i>
+          </div>
+        </el-tooltip>
+      </div>
+      <el-form
           ref="form"
           label-position="right"
           inline
@@ -57,7 +71,7 @@
           <el-form-item label="单位" prop="unit">
             <selectUnit 
 							v-model="formData.unit" 
-							style="width: 150px"
+							style="width: 120px"
 						/>
           </el-form-item>
           <el-form-item label="指标目录" prop="menu">
@@ -79,7 +93,7 @@
             <el-select
               v-model="formData.frequency"
               placeholder="请选择频度"
-              style="width: 150px"
+              style="width: 120px"
               clearable
             >
               <el-option
@@ -92,21 +106,6 @@
             </el-select>
           </el-form-item>
         </el-form>
-
-      </div>
-      <div class="right-handle">
-        <div>
-          <el-button type="primary" size="medium" @click="saveSheetHandle">保存</el-button>
-          <el-button type="primary" size="medium" plain @click="$router.go(-1)">取消</el-button>
-        </div>
-        <el-tooltip>
-          <div slot="content" v-html="tips"></div>
-          <div class="tips-cont">
-            <span>使用说明</span>
-            <i class="el-icon-question" style="color: #999;"></i>
-          </div>
-        </el-tooltip>
-      </div>
     </div>
     
     <div class="main">
@@ -538,6 +537,7 @@ export default {
 .adjust-data-container {
   .wrap-top {
     display: flex;
+    flex-wrap: wrap;
     justify-content: space-between;
     /* align-items: center; */
     margin-bottom: 20px;
@@ -550,15 +550,25 @@ export default {
     .min-top {
       margin-bottom: 10px;
       display: flex;
+      flex-wrap: wrap;
       align-items: center;
       color: #606266;
       li { margin-right: 35px; }
     }
+    .left-handle{
+        flex: 1;
+    }
     .right-handle {
       min-width: 155px;
+      display: flex;
+      flex-direction: row-reverse;
+      align-items: center;
+    }
+    .el-form{
+        width:100%;
     }
     .tips-cont {
-      margin-top: 20px;
+      margin-right: 20px;
     }
   }
   .main {

+ 9 - 2
src/views/dataEntry_manage/databaseComponents/addTargetDiaBase.vue

@@ -1,7 +1,7 @@
 <template>
 	<div class="addTargtDia-box" v-if="isAddTarget">
 		<el-dialog :visible.sync="isAddTarget" :close-on-click-modal="false" :modal-append-to-body='false'
-			@close="cancelHandle" custom-class="dialog" top="11vh" center width="1200px" v-dialogDrag>
+			@close="cancelHandle" custom-class="custom-dialog fit-screen-dialog" top="5vh" center width="85vw" 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>
@@ -256,6 +256,13 @@ export default {
 	},
 }
 </script>
+<style lang="scss">
+.addTargtDia-box {
+    .custom-dialog{
+        max-width: 1200px !important;
+    }
+}
+</style>
 <style lang='scss' scoped>
 .addTargtDia-box {
 	.dialog-top {
@@ -291,7 +298,7 @@ export default {
 	}
 
 	.dia-bot {
-		margin: 60px 0;
+		margin: 30px 0;
 		display: flex;
 		justify-content: center;
 	}

+ 21 - 2
src/views/dataEntry_manage/databaseComponents/chartTrendRender.vue

@@ -2,7 +2,7 @@
 	<div class="chart-trend-render">
 		<div class="header">
 			<template v-if="chart_type===1">
-				<el-button
+				<!-- <el-button
 					type="primary"
 					v-for="item in yearSelector"
 					:key="item.value"
@@ -11,7 +11,25 @@
 					class="year-btn"
 					@click.native="changeYear(item)"
 					>{{ item.name }}</el-button
-				>
+				> -->
+				<el-popover 
+					placement="bottom" 
+					trigger="click" 
+					popper-class="btn-select-popover"
+					width="460" style="display: inline-block;">
+					<div class="btn-wrap">
+						<el-button
+							type="primary"
+							v-for="item in yearSelector"
+							:key="item.value"
+							size="mini"
+							:plain="item.value !== year_select"
+							class="year-btn"
+							@click.native="changeYear(item)"
+							>{{ item.name }}</el-button>
+					</div>
+					<el-button type="primary" plain size="mini" class="year-btn" slot="reference" style="margin-right:15px;background-color: #e6eefb;color:#0052D9;">时间段</el-button>
+				</el-popover>
 				<el-button type="primary" plain size="mini" class="btn-sty" @click="openDateDia">{{
 					dateTip
 				}}</el-button>
@@ -776,6 +794,7 @@ export default {
 .chart-trend-render {
 	width:100%;
 	box-sizing: border-box;
+	overflow-x: hidden;
 	@media screen and (min-width: 1711px) {
 		.min-data-input { margin-top: 300px; }
 	}

+ 9 - 3
src/views/dataEntry_manage/databaseComponents/computedDialog.vue

@@ -4,10 +4,9 @@
 		:close-on-click-modal="false"
 		:modal-append-to-body="false"
 		@close="cancelHandle"
-		custom-class="computed-dialog"
+		custom-class="computed-dialog fit-screen-dialog"
 		center
-		width="1090px"
-		top="8vh"
+		top="6vh"
 		v-dialogDrag
 	>
 		<div slot="title" style="display: flex; align-items: center">
@@ -444,6 +443,8 @@ export default {
 </script>
 <style lang="scss">
 .computed-dialog {
+    max-width: 1200px !important;
+    width:85vw;
 	overflow: hidden;
 	div::-webkit-scrollbar {
 		width: 6px !important;
@@ -454,6 +455,11 @@ export default {
 	}
 	.dialog-main {
 		padding: 25px 42px 25px 25px;
+		@media screen and (max-height:850px){
+			box-sizing: border-box;
+			height: 65vh;
+			overflow-y: auto;
+		}
 		.el-cascader .el-input {
 			width: 340px;
 		}

+ 39 - 8
src/views/dataEntry_manage/databaseComponents/dataAssociateChart.vue

@@ -4,14 +4,30 @@
             <tableNoData text="该指标暂无关联图"/>
         </div>
         <template v-else>
-        <p style="position:relative;top:-20px;font-size:16px">共 {{chartTotal}} 张图表</p>
+        <p style="position:relative;font-size:16px">共 {{chartTotal}} 张图表</p>
         <div
             class="chart-public-list"
             v-infinite-scroll="load"
             infinite-scroll-immediate="false"
             :infinite-scroll-disabled="finished"
         >
-            <el-col
+            <div class="chart-list-item-wrap">
+                <div class="chart-list-item" v-for="chart in list" :key="chart.ChartInfoId">
+                    <div class="chart-item-top text_oneLine"><span class="text_oneLine">{{ chart.ChartName }}</span></div>
+                    <div class="chart-item-img" @click="detailShowHandle(chart)"
+                        :style="chart.ChartImage?{background: `no-repeat top/cover url('${chart.ChartImage}')`}:{}"></div>
+                    <div class="chart-item-bottom">
+                        <span>创建时间: {{ chart.CreateTime.slice(0,10) }}</span>
+                        <span class="join_txt" @click="addMychartHandle(chart)">
+                            <img :src="$icons.chart_join_ico"
+                                style="width: 13px; height: 12px; vertical-align: middle"/>
+                            加入我的图库
+                        </span>
+                    </div>
+                </div>
+
+            </div>
+            <!-- <el-col
                 :span="6"
                 style="margin-bottom: 20px; padding-right: 20px"
                 v-for="chart in list"
@@ -42,7 +58,7 @@
                         </span>
                     </div>
                 </el-card>
-            </el-col>
+            </el-col> -->
         </div>
         </template>
 
@@ -180,6 +196,12 @@ export default {
 </script>
 
 <style lang="scss" scoped>
+.associate-chart{
+    height: 100%;
+    overflow: hidden;
+    display: flex;
+    flex-direction: column;
+}
 .empty-list{
     min-height: calc(100vh - 300px);
     background-color: #fff;
@@ -187,11 +209,20 @@ export default {
     padding-top: 100px;
 }
 .chart-public-list{
-    display: flex;
-      flex-wrap: wrap;
-      max-height: calc(100vh - 143px);
-      overflow: hidden;
-      overflow-y: auto;
+    flex: 1;
+    width: 100%;
+    margin-top:20px;
+    /* max-height: calc(100vh - 220px); */
+    overflow-y: auto;
+      .chart-list-item{
+          width:31%;
+          min-width: 235px;
+          .join_txt {
+            float: right;
+            color: #409eff;
+            cursor: pointer;
+          }
+      }
 }
 .public-chart-item {
         .item-top {

+ 2 - 2
src/views/dataEntry_manage/databaseComponents/operationDialog.vue

@@ -4,9 +4,8 @@
 		:close-on-click-modal="false"
 		:modal-append-to-body="false"
 		@close="cancelHandle"
-		custom-class="operation-dialog"
+		custom-class="operation-dialog fit-screen-dialog"
 		center
-		width="1200px"
 		top="5vh"
 		v-dialogDrag
 	>
@@ -729,6 +728,7 @@ export default {
 </script>
 <style lang='scss'>
 .operation-dialog {
+	max-width: 1200px !important;
 	position: relative;
 	div::-webkit-scrollbar {
 		width: 6px !important;

+ 211 - 140
src/views/dataEntry_manage/databaseList.vue

@@ -1,7 +1,7 @@
 <template>
 	<div class="database_container">
 		<div class="database_top">
-			<div>
+			<div class="top-left">
 				<el-button v-permission="permissionBtn.edbDataPermission.edbData_addEdb"
 					type="primary" @click="addHandler">添加指标</el-button>
 				<el-button v-permission="permissionBtn.edbDataPermission.edbData_calcuEdb"
@@ -28,7 +28,7 @@
 					remote
 					clearable
 					placeholder="指标ID/指标名称"
-					style="width: 400px;margin-left:10px;"
+					style="width: 260px;"
 					:remote-method="searchHandle"
 					@click.native="inputFocusHandle"
 				>
@@ -54,8 +54,16 @@
 				/>
 		</div>
 		<div class="database_main box" id="box" v-if="showData">
+			<!-- 展开收起目录按钮 -->
+			<span
+				v-show="!isMainLeftShow"
+				class="slide-btn-icon slide-right"
+				@click="isMainLeftShow = !isMainLeftShow"
+			>
+				<i :class="{'el-icon-d-arrow-left':isMainLeftShow,'el-icon-d-arrow-right':!isMainLeftShow}"></i>
+			</span>
 			<!-- <target-tree /> -->
-			<div class="main-left left" id="left">
+			<div class="main-left left" id="left" v-show="isMainLeftShow">
 				<div class="tree-cont">
 					<el-tree
 						ref="menuTree"
@@ -173,6 +181,13 @@
 				</div>
 				<span class="move-btn resize" v-drag id="resize" @mousemove="dynamicNode&&resetNodeStyle(dynamicNode)">
 				</span>
+				<span
+					v-show="isMainLeftShow"
+					class="slide-btn-icon slide-left"
+					@click="isMainLeftShow = !isMainLeftShow"
+				>
+					<i :class="{'el-icon-d-arrow-left':isMainLeftShow,'el-icon-d-arrow-right':!isMainLeftShow}"></i>
+				</span>
 			</div>
 			<!-- 指标关联图模块 -->
 			<div class="main-right right" id="right" style="background:transparent;border:none;box-shadow:none" v-if="showAssociateChart">
@@ -185,108 +200,126 @@
 			<div class="main-right right list" id="right" v-show="isShowList">
 				<p>共{{Total||0}}个指标</p>
 				<div class="list-wrap" ref="listRef" @scroll="loadMoreHandle" v-if="Total">
-					<div class="list-item" v-for="item in chartList" :key="item.EdbInfoId">
-						<div class="header">
-							<span v-show="currentLang=='ch'">{{ item.EdbName }}</span> 
-							<span v-show="currentLang=='en'">{{ item.EdbNameEn || item.EdbName }}</span>
-						</div>
-						<div class="image" @click="detailShowHandle(item)">
-							<img :src="item.ChartImage" alt=""/>
-						</div>
-						<div class="info">
-							创建时间:{{item.CreateTime.substring(0,10)}}
+					<div class="chart-list-item-wrap">
+						<div class="list-item" v-for="item in chartList" :key="item.EdbInfoId">
+							<div class="header">
+								<span v-show="currentLang=='ch'">{{ item.EdbName }}</span> 
+								<span v-show="currentLang=='en'">{{ item.EdbNameEn || item.EdbName }}</span>
+							</div>
+							<div class="image" @click="detailShowHandle(item)"
+								:style="item.ChartImage?{background: `no-repeat top/cover url('${item.ChartImage}')`}:{}">
+								<!-- <img :src="item.ChartImage"/> -->
+							</div>
+							<div class="info">
+								创建时间:{{item.CreateTime.substring(0,10)}}
+							</div>
 						</div>
 					</div>
-					<p style="height: 40px;line-height:40px;width: 100%;"></p>
+					
 				</div>
 				<div v-if="!Total" class="nodata">
 					<tableNoData text="暂无指标"/>
 				</div>
 			</div>
 			<!-- 指标详情 -->
-			<div class="main-right right detail" id="right" v-show="isShowDetail">
-				<div class="header">
-					<el-tabs v-model="activeTab" @tab-click="rePainChart">
-						<el-tab-pane label="走势图" name="Chart">
-						</el-tab-pane>
-						<el-tab-pane label="数据详情" name="Data">
-						</el-tab-pane>
-					</el-tabs>
-					<div class="edb-tool">
-						<el-button v-if="isEdbBtnShow('update')"
-							type="text" @click="refreshTargetHandle" >刷新</el-button>
-						<el-button v-if="isEdbBtnShow('edit')"
-								type="text" :disabled="!(EdbData.Button.OpButton)"
-								@click="editNode({},EdbData)"
-							>编辑</el-button>
-						<!-- 指保存指标的上下限,在走势图才显示 -->
-						<el-button v-if="activeTab==='Chart'&&isEdbBtnShow('saveEdb')"
-							type="text" @click.stop="saveEdbLimit">保存</el-button>
-						<el-button v-if="isEdbBtnShow('setEn')"
-							type="text" @click="openEnNameDia">设置英文名称</el-button>
-						<el-button v-if="EdbData.Button.InsertNewDataButton&&isEdbBtnShow('newValue')"
-							type="text" @click.stop="updateNewestDataHandle" >{{(EdbData.DataInsertConfig.Date)?'编辑最新值':'添加最新值'}}</el-button>
-						<el-button v-if="EdbData.EdbType===2&&isEdbBtnShow('calculateAgain')"
-							type="text" @click.stop="reCalculateHandler" :loading="calculateLoading">重新计算</el-button>
-						<el-button v-if="EdbData.EdbType===2&&isEdbBtnShow('toSource')"
-							type="text" @click="isLookHistory=true;lookEdbId=selected_edbid">指标溯源</el-button>
-						<el-button v-if="EdbData.EdbType===1&&isEdbBtnShow('refreshAll')"
-							type="text" @click.stop="refreshBaseHandler" :loading="refreshLoading">全部刷新</el-button>
-						<el-button v-if="isEdbBtnShow('copyData')"
-							type="text" @click="copyCode">复制数据</el-button>
-						<el-button v-if="EdbData.Button.DeleteButton&&isEdbBtnShow('deleteEdb')"
-							type="text" @click="removeNode(_,EdbData)" style="color:#C54322;">删除</el-button>
-					</div>
-				</div>
-				<div class="container" id="detail-container">
-					<div class="chart" v-show="activeTab==='Chart'">
-						<chart-trend-render
-							:edbid="selected_edbid"
-							:chartLang="currentLang"
-							:isShowChartBasis="isEdbBtnShow('showChartBasis')"
-							:isAllowSwitchSeason="isEdbBtnShow('switchSeason')"
-							:isAllowEditLimit="isEdbBtnShow('editLimit')"
-							ref="createChart"
-							@editEnName="openEnNameDia"/>
-						<div class="info">
-							<span>数据来源:{{EdbData.SourceName}}</span>
-							<span>添加人:{{EdbData.SysUserRealName}}</span>
+			<div class="main-right right detail-wrap" id="right" v-show="isShowDetail">
+				<div class="detail">
+					<div class="header">
+						<el-tabs v-model="activeTab" @tab-click="rePainChart">
+							<el-tab-pane label="走势图" name="Chart">
+							</el-tab-pane>
+							<el-tab-pane label="数据详情" name="Data">
+							</el-tab-pane>
+						</el-tabs>
+						<div class="edb-tool-icon edb-tool" style="align-items: center;">
+							<el-popover 
+								placement="left" 
+								trigger="click"
+								popper-class="edb-tool-popover"
+								width="320" style="display: inline-block;">
+								<div class="edb-tool-wrap">
+									<el-button v-if="isEdbBtnShow('update')"
+										type="text" @click="refreshTargetHandle" >刷新</el-button>
+									<el-button v-if="isEdbBtnShow('edit')"
+											type="text" :disabled="!(EdbData.Button.OpButton)"
+											@click="editNode({},EdbData)"
+										>编辑</el-button>
+									<!-- 指保存指标的上下限,在走势图才显示 -->
+									<el-button v-if="activeTab==='Chart'&&isEdbBtnShow('saveEdb')"
+										type="text" @click.stop="saveEdbLimit">保存</el-button>
+									<el-button v-if="isEdbBtnShow('setEn')"
+										type="text" @click="openEnNameDia">设置英文名称</el-button>
+									<el-button v-if="EdbData.Button.InsertNewDataButton&&isEdbBtnShow('newValue')"
+										type="text" @click.stop="updateNewestDataHandle" >{{(EdbData.DataInsertConfig.Date)?'编辑最新值':'添加最新值'}}</el-button>
+									<el-button v-if="EdbData.EdbType===2&&isEdbBtnShow('calculateAgain')"
+										type="text" @click.stop="reCalculateHandler" :loading="calculateLoading">重新计算</el-button>
+									<el-button v-if="EdbData.EdbType===2&&isEdbBtnShow('toSource')"
+										type="text" @click="isLookHistory=true;lookEdbId=selected_edbid">指标溯源</el-button>
+									<el-button v-if="EdbData.EdbType===1&&isEdbBtnShow('refreshAll')"
+										type="text" @click.stop="refreshBaseHandler" :loading="refreshLoading">全部刷新</el-button>
+									<el-button v-if="isEdbBtnShow('copyData')"
+										type="text" @click="copyCode">复制数据</el-button>
+									<el-button v-if="EdbData.Button.DeleteButton&&isEdbBtnShow('deleteEdb')"
+										type="text" @click="removeNode(_,EdbData)" style="color:#C54322;">删除</el-button>
+								</div>
+								<div class="edb-btn" slot="reference">
+									<el-button type="text">操作</el-button>
+									<i class="el-icon-more" style="font-size: 14px;transform: rotate(90deg);cursor: pointer;color: #3375e1;"/>
+								</div>
+							</el-popover>
 						</div>
-						<ul class="value-ul"
-							v-show="showTable&&dataList.length">
-							<li class="value-item" style="background-color: #EBEFF6;">
-								<span style="width:240px">日期(频度:{{EdbData.Frequency}})</span>
-								<span style="flex:1;">值</span>
-							</li>
-							<li class="value-item"
-								v-for="item in dataList.slice(0,3)"
-								:key="item.EdbDataId">
-								<span class="value-label date" style="width:240px">
-									<span style="position: relative;">
-										<i class="new-tag" v-if="EdbData.LatestDate===item.DataTime"></i>
-										{{item.DataTime}}
-									</span>
-								</span>
-								<span :class="['value-label',{'predict-act': EdbData.DataInsertConfig.Date===item.DataTime}]" style="flex:1;">
-									<span :class="['value-style',{'predict-act': EdbData.DataInsertConfig.Date===item.DataTime}]">{{item.Value}}</span>
-								</span>
-							</li>
-							<li class="nodata value-item" v-if="!dataList.length">暂无数据</li>
-						</ul>
 					</div>
-					<div class="list" v-show="activeTab==='Data'">
-						<edb-detail-data 
-							ref="edb_detail_data"
-							:current-lang="currentLang"
-							:table-data="tableData"
-							:table-colums-one="tableColumsOne"
-							:table-colums-two="tableColumsTwo"
-							:data-list="dataList"
-							:haveMore="haveMore"
-							@getNextData="()=>{page_no++;getDataList();}"
-						/>
+					<div class="container" id="detail-container">
+						<div class="chart" v-show="activeTab==='Chart'">
+							<chart-trend-render
+								:edbid="selected_edbid"
+								:chartLang="currentLang"
+								:isShowChartBasis="isEdbBtnShow('showChartBasis')"
+								:isAllowSwitchSeason="isEdbBtnShow('switchSeason')"
+								:isAllowEditLimit="isEdbBtnShow('editLimit')"
+								ref="createChart"
+								@editEnName="openEnNameDia"/>
+							<div class="info">
+								<span>数据来源:{{EdbData.SourceName}}</span>
+								<span>添加人:{{EdbData.SysUserRealName}}</span>
+							</div>
+							<ul class="value-ul"
+								v-show="showTable&&dataList.length">
+								<li class="value-item" style="background-color: #EBEFF6;">
+									<span style="width:240px">日期(频度:{{EdbData.Frequency}})</span>
+									<span style="flex:1;">值</span>
+								</li>
+								<li class="value-item"
+									v-for="item in dataList.slice(0,3)"
+									:key="item.EdbDataId">
+									<span class="value-label date" style="width:240px">
+										<span style="position: relative;">
+											<i class="new-tag" v-if="EdbData.LatestDate===item.DataTime"></i>
+											{{item.DataTime}}
+										</span>
+									</span>
+									<span :class="['value-label',{'predict-act': EdbData.DataInsertConfig.Date===item.DataTime}]" style="flex:1;">
+										<span :class="['value-style',{'predict-act': EdbData.DataInsertConfig.Date===item.DataTime}]">{{item.Value}}</span>
+									</span>
+								</li>
+								<li class="nodata value-item" v-if="!dataList.length">暂无数据</li>
+							</ul>
+						</div>
+						<div class="list" v-show="activeTab==='Data'">
+							<edb-detail-data 
+								ref="edb_detail_data"
+								:current-lang="currentLang"
+								:table-data="tableData"
+								:table-colums-one="tableColumsOne"
+								:table-colums-two="tableColumsTwo"
+								:data-list="dataList"
+								:haveMore="haveMore"
+								@getNextData="()=>{page_no++;getDataList();}"
+							/>
+						</div>
 					</div>
 				</div>
+				
 			</div>
 		</div>
 		<!-- 输入英文指标弹窗 -->
@@ -332,7 +365,7 @@
 		:modal-append-to-body='false'
 		@close="isOpenComputed=false;"
 		custom-class="dialog-computed"
-		top="12vh"
+		top="6vh"
 		center
 		width="920px"
 		v-dialogDrag>
@@ -512,40 +545,39 @@ export default {
 		SmoothEdbDialog,
 	},
 	directives: {
-    drag(el, bindings) {
-      el.onmousedown = function(e) {
+		drag(el, bindings,vnode) {
+			el.onmousedown = function(e) {
 				var init = e.clientX;
-				// console.log(init);
 				var box = $("#box")[0]
-				// console.log(box.clientWidth)
 				let total_wid = box.offsetWidth
-        var left = $("#left")[0];
-        var right = $("#right")[0];
-        var initWidth = left.offsetWidth;
-        document.onmousemove = function(e) {
-          var end = e.clientX;
-					// console.log(total_wid,initWidth,end);
+				var left = $("#left")[0];
+				var right = $("#right")[0];
+				var initWidth = left.offsetWidth;
+				document.onmousemove = function(e) {
+					var end = e.clientX;
 					if(end > 310){
-            var newWidth = end - init + initWidth;
-						// right.style.width = total_wid-end+80 +'px'
+						var newWidth = end - init + initWidth;
 						right.style.width = total_wid - newWidth + 'px'
-            left.style.width = newWidth + "px";
-          }else{
-            end = 350;
-            // 最小宽度300
-            left.style.width = 300 + "px";
+						left.style.width = newWidth + "px";
+					}else{
+						end = 350;
+						// 最小宽度300
+						left.style.width = 300 + "px";
 						// right.style.width = total_wid-300-20 +'px'
-          }
-        };
-        document.onmouseup = function() {
-          document.onmousemove = document.onmouseup = null;
+					}
+					
+				};
+				document.onmouseup = function() {
+					document.onmousemove = document.onmouseup = null;
 					e.releaseCapture && e.releaseCapture();
-        };
+					//移动结束触发重绘
+					vnode.context.rePainChart()
+				};
 				e.setCapture && e.setCapture();
 				return false;
-      };
-    }
-  },
+			};
+		}
+	},
 	data() {
 		return {
 			showData: false,
@@ -696,7 +728,9 @@ export default {
 			chartList:[],
 
 			activeTab:'',
-			activeName:'second'
+			activeName:'second',
+
+			isMainLeftShow:true,
 		};
 	},
 	watch: {
@@ -732,7 +766,10 @@ export default {
 				this.CurrentIndex = 1
 				this.getEdbChartList()
 			}
-		}
+		},
+		isMainLeftShow(newVal){
+			this.rePainChart()
+		},
 	},
 	computed: {
 			/* 计算弹窗控制 */
@@ -927,7 +964,7 @@ export default {
 			let scrollTop = this.$refs.listRef.scrollTop;
 			let clientHeight = this.$refs.listRef.clientHeight;
 			let scrollHeight = this.$refs.listRef.scrollHeight;
-			if(scrollTop + clientHeight >= scrollHeight-10 && !this.IsListEnd){
+			if(scrollTop + clientHeight >= scrollHeight-210 && !this.IsListEnd){
 				this.CurrentIndex++;
 				this.getEdbChartList();
 			}
@@ -1918,6 +1955,10 @@ export default {
 		next()
 	},
 	mounted() {
+		if (document.body.clientWidth <= 1400) {
+			//小屏适配
+			this.isMainLeftShow = false;
+		}
 		this.getlabelList()
 		this.getEdbChartList()
 		this.$route.query.code 
@@ -1983,14 +2024,26 @@ export default {
 		border: 1px solid #ececec;
 		border-radius: 4px;
 		box-shadow: 0 3px 6px rgba(0, 0, 0, 0.05);
-		.top-right {
+		.top-right,.top-left{
 			display: flex;
 			align-items: center;
+			gap:20px;
+			flex-wrap: wrap;
+			.el-button + .el-button{
+				margin-left: 0;
+			}
 		}
+		/* .top-left{
+			display: flex;
+			
+		} */
 	}
 	.database_main {
 		display: flex;
 		margin-top: 20px;
+		position:relative;
+		width:100%;
+		overflow-x: auto;
 		div::-webkit-scrollbar {
 			width: 5px !important;
 		}
@@ -2178,33 +2231,27 @@ export default {
 				.list-wrap{
 					flex: 1;
 					margin-top: 20px;
-					display: flex;
-					gap: 20px;
-					flex-wrap: wrap;
-					overflow-x: hidden;
 					overflow-y: auto;
 					.dragShdow {
 						box-shadow: 0 1px 8px rgba(64, 158, 255, 0.8);
 						opacity: 0.5;
 					}
 					.list-item{
-						width:23%;
-						height:375px;
+						width:31%;
+						min-width: 210px;
 						background-color: #fff;
 						display: flex;
 						flex-direction: column;
 						box-sizing: border-box;
-						/* padding: 0 10px; */
 						border-radius: 4px;
 						border:1px solid #DCDFE6;
 						box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
 						.header,.info{
-							padding:20px;
+							padding:10px;
 							box-sizing: border-box;
 							text-align: left;
 						}
 						.header{
-							//border-bottom: 1px solid #DCDFE6;
 							white-space: nowrap;
 							overflow: hidden;
 							text-overflow: ellipsis;
@@ -2213,21 +2260,23 @@ export default {
 							box-shadow: 0 3px 6px rgba(37, 37, 239, 0.1);
 						}
 						.image{
-							padding:20px 20px 0 20px;
-							flex: 1;
+							margin:10px;
+							margin-bottom: 0;
+							height: 0;
+							padding-bottom: 67%;
 							cursor: pointer;
-							img{
-								width:100%;
-								height: 230px;
-								object-fit: fill !important;
-							}
 						}
 					}
 				}
 			}
-			&.detail{
+			&.detail-wrap{
+				overflow-x:auto;
+			}
+			.detail{
 				display: flex;
 				flex-direction: column;
+				min-width: 780px;
+				height:100%;
 				>.header{
 					display: flex;
 					position: relative;
@@ -2297,6 +2346,14 @@ export default {
 			}
 
 		}
+		.slide-btn-icon{
+			&.slide-left{
+				right:0;
+			}
+			&.slide-right{
+				left: 0;
+			}
+		}
 	}
 	.dialog-computed {
 		.el-dialog__header {
@@ -2306,7 +2363,9 @@ export default {
 			}
 		}
 		.computed-ul {
+			box-sizing: border-box;
 			max-height: 600px;
+			height:65vh;
 			overflow-y: auto;
 			padding: 40px 92px;
 			display: flex;
@@ -2314,6 +2373,8 @@ export default {
 			.cpmputed-li {
 				width: 180px;
 				padding: 19px 0;
+				height: 60px;
+				box-sizing: border-box;
 				color: $theme-color;
 				font-size: 16px;
 				background:#ECF5FF;
@@ -2338,4 +2399,14 @@ export default {
 		}
 	}
 }
+.edb-tool-popover{
+	.edb-tool-wrap{
+		display: flex;
+		flex-wrap: wrap;
+		gap:0 10px;
+		.el-button + .el-button{
+			margin-left: 0;
+		}
+	}
+}
 </style>

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

@@ -576,7 +576,7 @@ created() {
 <style lang="scss" scoped>
   .excel-data-container{
     display: flex;
-    height: calc(100vh - 110px);
+    height: calc(100vh - 120px);
     .online-excel{
       flex-grow: 1;
       height: 100%;

+ 1 - 1
src/views/dataEntry_manage/thirdBase/UNdata.vue

@@ -243,7 +243,7 @@ import { dataInterence } from "@/api/api.js";
 <style lang="scss" scoped>
   #UN-data-container{
     background-color: white;
-    min-height: calc(100vh - 110px);
+    min-height: calc(100vh - 120px);
     position: relative;
     padding-bottom: 50px;
     box-sizing: border-box;

+ 35 - 8
src/views/predictEdb_manage/addPredicEdb.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="add-predicedb-page">
-    <div class="aside-warp">
+    <div class="aside-warp" v-show="isAsideShow">
       <div class="btn-box">
         <el-button type="primary" @click="saveHandle">保存</el-button>
         <el-button type="primary" plain @click="$router.back()">取消</el-button>
@@ -378,17 +378,27 @@
     <div class="main-wrap" id="right">
       <div class="con-box" v-show="edbData.DataList">
         <div class="top-title">{{ formData.edbName }}</div>
-        <chartInfo
-          :edbData="edbData"
-          :isAllowEditLimit="true"
-          @refreshData="refreshData"
-          ref="chartInfo"
-        />
+        <div class="chart-wrap">
+            <chartInfo
+                :edbData="edbData"
+                :isAllowEditLimit="true"
+                @refreshData="refreshData"
+                ref="chartInfo"
+                />
+        </div>
+        
       </div>
       <div class="empty-box" v-show="!edbData.DataList">
         <tableNoData text="暂无信息"/>
       </div>
     </div>
+    <span
+        class="slide-icon slide-btn-icon"
+        :class="{'slide-left':isAsideShow,'slide-right':!isAsideShow}"
+        @click="isAsideShow = !isAsideShow"
+    >
+        <i :class="{'el-icon-d-arrow-left':isAsideShow,'el-icon-d-arrow-right':!isAsideShow}"></i>
+    </span>
 
     <!-- 设置动态环差弹窗 -->
     <dynamic-differ
@@ -569,6 +579,8 @@ export default {
       /* 查看历史弹窗 */
 			isLookHistory: false,
 			lookEdbId: 0,
+      
+      isAsideShow:true,
     };
   },
   created() {
@@ -1146,6 +1158,7 @@ export default {
 
 <style lang="scss">
 .add-predicedb-page {
+    overflow-y: auto;
   .aside-warp {
     /* .el-form-item {
       margin-bottom: 0;
@@ -1180,6 +1193,7 @@ div {
 .add-predicedb-page {
   display: flex;
   min-height: calc(100vh - 150px);
+  position: relative;
   .aside-warp {
     flex-shrink: 0;
     width: 300px;
@@ -1222,12 +1236,21 @@ div {
   }
   .main-wrap {
     flex: 1;
-    width: 80%;
     background: #ffffff;
     border-radius: 4px;
     border: 1px solid #ececec;
+    overflow-x: auto;
   }
 
+  .slide-icon{
+    position: absolute;
+    &.slide-left {
+        left: 290px;
+    }
+    &.slide-right {
+        left: 0px;
+    }
+  }
   .rules-ul {
     border: 1px solid #dcdfe6;
     .del-icon {
@@ -1280,6 +1303,10 @@ div {
       padding-left: 30px;
       align-items: center;
     }
+    .chart-wrap{
+        box-sizing: border-box;
+        padding:30px;
+    }
   }
 }
 </style>

+ 25 - 8
src/views/predictEdb_manage/components/chartInfo.vue

@@ -3,7 +3,7 @@
         <div class="header">
             <!-- 曲线图时间筛选 -->
             <template v-if="chartInfo.ChartType==1">
-			<el-button
+			<!-- <el-button
 				type="primary"
 				v-for="item in yearSelector"
 				:key="item.value"
@@ -11,13 +11,30 @@
 				:plain="item.value !== year_select"
 				class="year-btn"
 				@click.native="changeYear(item)"
-				>{{ item.name }}</el-button
-			>
-			<el-button 
-                type="primary" size="mini"
-                class="btn-sty" 
-                @click="openDateDia"
-            >{{dateTip}}</el-button>
+				>{{ item.name }}</el-button> -->
+                <el-popover 
+                    placement="bottom" 
+                    trigger="click" 
+                    popper-class="btn-select-popover"
+                    width="460" style="display: inline-block;">
+                    <div class="btn-wrap">
+                        <el-button
+                            type="primary"
+                            v-for="item in yearSelector"
+                            :key="item.value"
+                            size="mini"
+                            :plain="item.value !== year_select"
+                            class="year-btn"
+                            @click.native="changeYear(item)"
+                            >{{ item.name }}</el-button>
+                    </div>
+                    <el-button type="primary" plain size="mini" class="year-btn" slot="reference" style="margin-right:15px;background-color: #e6eefb;color:#0052D9;">时间段</el-button>
+                </el-popover>
+                <el-button 
+                    type="primary" size="mini"
+                    class="btn-sty" 
+                    @click="openDateDia"
+                >{{dateTip}}</el-button>
             </template>
             <!-- 季节图时间选择 -->
             <!-- <template v-if="chartInfo.ChartType==2">

+ 1 - 1
src/views/predictEdb_manage/components/childData.vue

@@ -229,7 +229,7 @@ export default {
     border-bottom: 1px solid #dcdfe6;
     border-top: 1px solid #dcdfe6;
     /* max-height: 520px; */
-    max-height: calc(100vh - 430px);
+    max-height: calc(100vh - 445px);
     overflow-y: auto;
     .value-item {
       /* width: 100%; */

+ 27 - 27
src/views/predictEdb_manage/mixins/mixin.js

@@ -7,34 +7,34 @@ export default {
   },
   directives: {
     drag(el, bindings) {
-      el.onmousedown = function(e) {
-				var init = e.clientX;
-				var box = $("#box")[0]
-				let total_wid = box.offsetWidth
-        var left = $("#left")[0];
-        var right = $("#right")[0];
-        var initWidth = left.offsetWidth;
-        document.onmousemove = function(e) {
-          var end = e.clientX;
-					if(end > 310){
-            var newWidth = end - init + initWidth;
-						// right.style.width = total_wid-end+80 +'px'
-						right.style.width = total_wid - newWidth + 'px'
-            left.style.width = newWidth + "px";
-          }else{
-            end = 350;
-            // 最小宽度300
-            left.style.width = 300 + "px";
-						// right.style.width = total_wid-300-20 +'px'
-          }
-        };
-        document.onmouseup = function() {
-          document.onmousemove = document.onmouseup = null;
-					e.releaseCapture && e.releaseCapture();
+        el.onmousedown = function (e) {
+            var init = e.clientX;
+            var box = $("#box")[0]
+            let total_wid = box.offsetWidth
+            var left = $("#left")[0];
+            var right = $("#right")[0];
+            var initWidth = left.offsetWidth;
+            document.onmousemove = function (e) {
+                var end = e.clientX;
+                if (end > 310) {
+                    var newWidth = end - init + initWidth;
+                    // right.style.width = total_wid-end+80 +'px'
+                    right.style.width = total_wid - newWidth + 'px'
+                    left.style.width = newWidth + "px";
+                } else {
+                    end = 350;
+                    // 最小宽度300
+                    left.style.width = 300 + "px";
+                    // right.style.width = total_wid-300-20 +'px'
+                }
+            };
+            document.onmouseup = function () {
+                document.onmousemove = document.onmouseup = null;
+                e.releaseCapture && e.releaseCapture();
+            };
+            e.setCapture && e.setCapture();
+            return false;
         };
-				e.setCapture && e.setCapture();
-				return false;
-      };
     }
   },
 

+ 90 - 15
src/views/predictEdb_manage/predictEdb.vue

@@ -172,10 +172,12 @@
 				</span>
       </div>
 
-			<div class="main-right" id="right" :style="isSlideLeft ? 'width:100%' : 'width:80%'">
+			<div class="main-right" id="right" :style="isSlideLeft ? 'width:100%' : 'width:80%'"
+				:class="{'detail-main':select_id&&!showAssociateChart&&!showAssociateComputeData}"
+			>
 
 				<!-- 详情 -->
-				<div class="edb-detail-wrapper" v-if="select_id&&!showAssociateChart&&!showAssociateComputeData">
+				<div class="edb-detail-wrapper main-min-width" v-if="select_id&&!showAssociateChart&&!showAssociateComputeData">
 					<div class="detail-header">
 						<el-tabs v-model="activeTab" @tab-click="changeShowType">
 							<el-tab-pane label="走势图" name="Chart">
@@ -183,7 +185,39 @@
 							<el-tab-pane label="数据详情" name="Data">
 							</el-tab-pane>
 						</el-tabs>
-						<div class="edb-tool">
+						<div class="edb-tool-icon edb-tool" style="align-items: center;">
+							<el-popover 
+								placement="left" 
+								trigger="click"
+								popper-class="edb-tool-popover"
+								width="320" style="display: inline-block;">
+								<div class="edb-tool-wrap">
+									<el-button v-permission="permissionBtn.predictEdbPermission.edbPreData_enNameSetting"
+										type="text" @click="clickEdbNameHandle" v-if="currentLang==='ch'||!edb_nameEn">
+										设置英文名称
+									</el-button>
+									<el-button v-permission="permissionBtn.predictEdbPermission.edbPreData_edbSource"
+									type="text" @click="isLookHistory=true;lookEdbId=select_id">指标溯源</el-button>
+									<el-button v-permission="permissionBtn.predictEdbPermission.edbPreData_update"
+										type="text" @click="updateEdbPartHandle">刷新</el-button>
+									<el-button type="text" @click="editEdbHandle('')" 
+										v-if="edbButton.OpButton&&isEdbBtnShow('edbPreData_edit')">编辑</el-button>
+									<el-button type="text" @click="saveEdbHandle" 
+										v-if="detail_show_chart&&isEdbBtnShow('edbPreData_save')">保存</el-button>
+									<el-button v-permission="permissionBtn.predictEdbPermission.edbPreData_recalcu"
+										type="text" @click="updateEdbHandle">重新计算</el-button>
+									<el-button class="deletesty" @click="delEdbHandle" type="text"
+										v-if="edbButton.DeleteButton&&isEdbBtnShow('edbPreData_del')">删除</el-button>
+									<el-button v-permission="permissionBtn.predictEdbPermission.edbPreData_copyData"
+										type="text" @click="copyData">复制数据</el-button>
+								</div>
+								<div class="edb-btn" slot="reference">
+									<el-button type="text">操作</el-button>
+									<i class="el-icon-more" style="font-size: 14px;transform: rotate(90deg);cursor: pointer;color: #3375e1;"/>
+								</div>
+							</el-popover>
+						</div>
+						<!-- <div class="edb-tool">
 							<el-button v-permission="permissionBtn.predictEdbPermission.edbPreData_enNameSetting"
 								type="text" @click="clickEdbNameHandle" v-if="currentLang==='ch'||!edb_nameEn">
 								设置英文名称
@@ -202,9 +236,7 @@
 								v-if="edbButton.DeleteButton&&isEdbBtnShow('edbPreData_del')">删除</el-button>
 							<el-button v-permission="permissionBtn.predictEdbPermission.edbPreData_copyData"
 								type="text" @click="copyData">复制数据</el-button>
-							<!-- <el-button v-permission="permissionBtn.predictEdbPermission.edbPreData_viewData"
-								type="text" @click="detail_show_chart=!detail_show_chart">{{detail_show_chart ? '查看数据' : '查看图表'}} </el-button> -->
-						</div>
+						</div> -->
 					</div>
 
 					<!--  -->
@@ -235,8 +267,20 @@
 						ref="listRef"
 						@scroll="loadMoreHandle"
 					>
-						<el-col
-						:span="6"
+						<div class="chart-list-item-wrap">
+							<div class="sheet-item" v-for="item in edbChartList" :key="item.EdbInfoId">
+								<div class="item-top">
+									<span class="text_oneLine">{{ currentLang === 'en' ? (item.EdbNameEn||item.EdbName) : item.EdbName }}</span>
+								</div>
+								<div class="chart-img" @click="detailShowHandle(item)"
+								:style="item.ChartImage?{background: `no-repeat top/cover url('${item.ChartImage}')`}:{}"></div>
+								<div class="item-bottom">
+									<span>创建时间: {{ item.CreateTime.slice(0,10) }}</span>
+								</div>
+							</div>
+						</div>
+						<!-- <el-col
+						:span="8"
 						style="margin-bottom: 20px; padding-right: 20px"
 						v-for="item in edbChartList"
 						:key="item.EdbInfoId"
@@ -255,7 +299,7 @@
 							<span>创建时间: {{ item.CreateTime.slice(0,10) }}</span>
 							</div>
 						</el-card>
-						</el-col>
+						</el-col> -->
 					</div>
 					<div v-if="!edb_total" class="nodata">
 						<tableNoData text="暂无指标"/>
@@ -279,9 +323,9 @@
 		:modal-append-to-body='false'
 		@close="isOpenComputed=false;"
 		custom-class="dialog-computed"
-		top="12vh"
+		top="6vh"
 		center
-		width="950px"
+		width="85vw"
 		v-dialogDrag>
 			<div class="dialog-computed-header">
 				<el-radio-group v-model="computed_source" size="medium" @change="computed_type = 0">
@@ -1409,6 +1453,10 @@ export default {
 		}
 	},
 	mounted() {
+		if (document.body.clientWidth <= 1400) {
+			//小屏适配
+			this.isSlideLeft = true;
+		}
 		const obj=sessionStorage.getItem('predictEdbTreeData')
 		if(obj||this.$route.query.code){
 			let code=obj?JSON.parse(obj).code:this.$route.query.code
@@ -1583,13 +1631,20 @@ $mini-font: 12px; $normal-font: 14px;
 
 		.main-right {
 			width: 80%;
+			height: calc(100vh - 120px);
+			&.detail-main{
+				overflow-x:auto;
+			}
 			.edb-detail-wrapper {
 				height: 100%;
 				border: 1px solid #ececec;
 				border-radius: 4px;
 				box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.05);
-				overflow: auto;
+				overflow: hidden;
 				background: #fff;
+				&.main-min-width{
+					min-width: 780px;
+				}
 				.detail-top {
 					padding: 20px;
 					display: flex;
@@ -1651,21 +1706,38 @@ $mini-font: 12px; $normal-font: 14px;
 						opacity: 0.5;
 					}
 					.sheet-item {
+						width:31%;
+						min-width: 255px;
+						border-radius: 4px;
+						box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+						border: 1px solid #EBEEF5;
+						background-color: #FFFFFF;
+						overflow: hidden;
+						color: #303133;
+						transition: 0.3s;
+						.item-top,.item-bottom{
+							padding:10px;
+							text-align: left;
+						}
 						.item-top {
 							display: flex;
 							justify-content: space-between;
 							align-items: center;
 							font-size: 16px;
 							font-weight: 600;
+							box-shadow: 0 3px 6px rgba(37, 37, 239, 0.1);
 						}
 						.chart-img {
-							width: 100%;
+							/* width: 100%;
 							height: 230px;
-							object-fit: fill !important;
+							object-fit: fill !important; */
+							margin:10px;
+							margin-bottom: 0;
+							height: 0;
+							padding-bottom: 67%;
 							cursor: pointer;
 						}
 						.item-bottom {
-							margin-top: 10px;
 							display: flex;
 							justify-content: space-between;
 							font-size: 12px;
@@ -1691,6 +1763,7 @@ $mini-font: 12px; $normal-font: 14px;
 
 	.computed-ul {
 		max-height: 600px;
+		height: 70vh;
 		overflow-y: auto;
 		padding: 40px 92px;
 		display: flex;
@@ -1698,6 +1771,7 @@ $mini-font: 12px; $normal-font: 14px;
 		.cpmputed-li {
 			width: 180px;
 			padding: 19px 0;
+			height:60px;
 			color: $theme-color;
 			font-size: 16px;
 			background:#ECF5FF;
@@ -1775,6 +1849,7 @@ $mini-font: 12px; $normal-font: 14px;
 	}
 
 	.dialog-computed {
+		max-width:950px !important;
 		.el-dialog__header {
 			background-color: #fff;
 			.el-dialog__close {

+ 57 - 17
src/views/report_manage/addreportNew.vue

@@ -2,6 +2,7 @@
 	<div id="addreport">
 		<div 
 			id="leftfroala" 
+			:class="{'full':!isRightFormShow,'block':isRightFormShow}"
 			v-loading="importChartNum>0" 
 			element-loading-text="图表批量插入中..."
 			element-loading-spinner="el-icon-loading"
@@ -15,7 +16,7 @@
 				v-model="aeForm.content"
 			></froala>
 		</div>
-		<div id="rightitems">
+		<div id="rightitems" v-show="isRightFormShow">
 			<div
 				style="
 					text-align: right;
@@ -48,19 +49,25 @@
 					@click.native="clickreportadd('cg')"
 					>存草稿</el-button
 				>
-				<el-button v-permission="permissionBtn.reportManageBtn.reportManage_publish"
-					type="primary"
-					size="medium"
-					@click.native="clickreportadd('dsfb')"
-					>定时发布</el-button
-				>
-				<el-button
-					type="primary"
-					size="medium"
-					@click.native="clickreportadd('fb')"
-					:loading="isPublishloading"
-					>发布</el-button
-				>
+				<!--不走审批流-->
+				<template v-if="!isApprove">
+					<el-button v-permission="permissionBtn.reportManageBtn.reportManage_publish"
+						type="primary"
+						size="medium"
+						@click.native="clickreportadd('dsfb')"
+						>定时发布</el-button
+					>
+					<el-button
+						type="primary"
+						size="medium"
+						@click.native="clickreportadd('fb')"
+						:loading="isPublishloading"
+						>发布</el-button
+					>
+				</template>
+				<template v-if="isApprove">
+					<el-button type="primary" size="medium" @click="clickreportadd('fb')">提交</el-button>
+				</template>
 			</div>
 			<div
 				style="
@@ -304,6 +311,13 @@
 				</div>
 			</div>
 		</div>
+		<span
+			class="slide-icon"
+			:class="{'slide-left':!isRightFormShow,'slide-right':isRightFormShow}"
+			@click="isRightFormShow = !isRightFormShow"
+		>
+			<i :class="{'el-icon-d-arrow-left':!isRightFormShow,'el-icon-d-arrow-right':isRightFormShow}"></i>
+		</span>
 
 		<!-- 定时发布弹窗 -->
 		<el-dialog 
@@ -437,7 +451,7 @@ export default {
 		}
 	},
 	updated() {
-		$('#leftfroala').find('p').css({ fontSize: '16px' });
+		$('#leftfroala').find('p').css({ fontSize: '16px',width:'100%' });
 		$('#leftfroala').find('p strong span').css({ fontSize: '16px' });
 		$('#leftfroala')
 			.find('.fr-placeholder')
@@ -600,7 +614,7 @@ export default {
 			if (tp == 'fb') {
 				this.isPublishloading = true;
 			}
-			const isPost = this.permissionBtn.checkPermissionBtn(this.permissionBtn.reportManageBtn.reportManage_sendMsg)
+			const isPost = this.permissionBtn.checkPermissionBtn(this.permissionBtn.reportManageBtn.reportManage_sendMsg)&&(!this.isApprove)
 			// 如果已经添加过就修改 否则新增
 			if (this.isAddEnter) {
 				let params2 = {
@@ -915,7 +929,13 @@ export default {
 	overflow: hidden;
 	#leftfroala {
 		flex: 1;
-		max-width: calc(100vw - 750px);
+		overflow: hidden;
+		&.full{
+			max-width: calc(100vw - 200px - 60px);
+		}
+		&.block{
+			max-width: calc(100vw - 200px - 60px - 500px);
+		}
 	}
 	#rightitems {
 		width: 500px;
@@ -973,6 +993,26 @@ export default {
 			font-size: 14px;
 		}
 	}
+	.slide-icon {
+		padding: 20px 0;
+		box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.3);
+		border-radius: 5px;
+		background-color: #fff;
+		cursor: pointer;
+		position: fixed;
+		top: 50%;
+		transform: translateY(-50%);
+		z-index: 99;
+		&:hover {
+			background-color: #e0e0e0;
+		}
+		&.slide-left {
+			right: 30px;
+		}
+		&.slide-right {
+			right: 500px;
+		}
+	}
 }
 </style>
 <style lang="scss">

+ 2 - 2
src/views/report_manage/cloudDisk.vue

@@ -691,7 +691,7 @@ import 'streamsaver/examples/zip-stream'
 
 <style lang="scss" scoped>
   #cloud-disk-container{
-    min-height: calc(100vh - 110px);
+    min-height: calc(100vh - 120px);
     box-sizing: border-box;
     .top-zone{
       display: flex;
@@ -713,7 +713,7 @@ import 'streamsaver/examples/zip-stream'
     .table-zone{
       background-color: white;
       padding: 6px 10px 20px;
-      min-height: 727px;
+      min-height: 700px;
       box-sizing: border-box;
       .bread-crumb-row{
         padding:14px 10px 20px 50px;

+ 57 - 17
src/views/report_manage/editreportNew.vue

@@ -2,6 +2,7 @@
 	<div id="editreport">
 		<div 
 			id="leftfroala"
+			:class="{'full':!isRightFormShow,'block':isRightFormShow}"
 			v-loading="importChartNum>0" 
 			element-loading-text="图表批量插入中..."
 			element-loading-spinner="el-icon-loading"
@@ -15,7 +16,7 @@
 				v-model="aeForm.content"
 			></froala>
 		</div>
-		<div id="rightitems">
+		<div id="rightitems" v-show="isRightFormShow">
 			<div
 				style="
 					text-align: right;
@@ -48,19 +49,25 @@
 					@click.native="clickreportadd('cg')"
 					>存草稿</el-button
 				>
-				<el-button v-permission="permissionBtn.reportManageBtn.reportManage_publish"
-					type="primary"
-					size="medium"
-					@click.native="clickreportadd('dsfb')"
-					>定时发布</el-button
-				>
-				<el-button
-					type="primary"
-					size="medium"
-					@click.native="clickreportadd('fb')"
-					:loading="isPublishloading"
-					>发布</el-button
-				>
+				<!--不走审批流-->
+				<template v-if="!isApprove">
+					<el-button v-permission="permissionBtn.reportManageBtn.reportManage_publish"
+						type="primary"
+						size="medium"
+						@click.native="clickreportadd('dsfb')"
+						>定时发布</el-button
+					>
+					<el-button
+						type="primary"
+						size="medium"
+						@click.native="clickreportadd('fb')"
+						:loading="isPublishloading"
+						>发布</el-button
+					>
+				</template>
+				<template v-if="isApprove">
+					<el-button type="primary" size="medium" @click="clickreportadd('fb')">提交</el-button>
+				</template>
 			</div>
 			<div
 				style="
@@ -301,6 +308,13 @@
 				</div>
 			</div>
 		</div>
+		<span
+			class="slide-icon"
+			:class="{'slide-left':!isRightFormShow,'slide-right':isRightFormShow}"
+			@click="isRightFormShow = !isRightFormShow"
+		>
+			<i :class="{'el-icon-d-arrow-left':!isRightFormShow,'el-icon-d-arrow-right':isRightFormShow}"></i>
+		</span>
 
 		<!-- 定时发布弹窗 -->
 		<el-dialog 
@@ -434,7 +448,7 @@ export default {
 		window.addEventListener('message',this.reInitIframe)
 	},
 	updated() {
-		$('#leftfroala').find('p').css({ fontSize: '16px' });
+		$('#leftfroala').find('p').css({ fontSize: '16px',width:'100%'});
 	},
 	destroyed() {
 		window.removeEventListener('message',this.reInitIframe)
@@ -624,7 +638,7 @@ export default {
 				window.open(href, '_blank');
 				return false;
 			}
-			const isPost = this.permissionBtn.checkPermissionBtn(this.permissionBtn.reportManageBtn.reportManage_sendMsg)
+			const isPost = this.permissionBtn.checkPermissionBtn(this.permissionBtn.reportManageBtn.reportManage_sendMsg)&&(!this.isApprove)
 			if (tp == 'fb') {
 				this.isPublishloading = true;
 				// 判断是否要推送客群
@@ -900,7 +914,13 @@ export default {
 	overflow: hidden;
 	#leftfroala {
 		flex: 1;
-		max-width: calc(100vw - 750px);
+		overflow: hidden;
+		&.full{
+			max-width: calc(100vw - 200px - 60px);
+		}
+		&.block{
+			max-width: calc(100vw - 200px - 60px - 500px);
+		}
 	}
 	#rightitems {
 		width: 500px;
@@ -957,6 +977,26 @@ export default {
 			font-size: 14px;
 		}
 	}
+	.slide-icon {
+		padding: 20px 0;
+		box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.3);
+		border-radius: 5px;
+		background-color: #fff;
+		cursor: pointer;
+		position: fixed;
+		top: 50%;
+		transform: translateY(-50%);
+		z-index: 99;
+		&:hover {
+			background-color: #e0e0e0;
+		}
+		&.slide-left {
+			right: 30px;
+		}
+		&.slide-right {
+			right: 500px;
+		}
+	}
 }
 </style>
 <style lang="scss">

+ 20 - 1
src/views/report_manage/mixins/messagePush.js

@@ -4,8 +4,19 @@ export default {
   data() {
     return {
       isMessagePost: false,
+      //isApprove:false,//是否走审批流
+      isRightFormShow:true
     };
   },
+  computed:{
+    //是否开启审批流,若开启,发布相关按钮,筛选项改变
+    isApprove(){
+        const type = this.$setting.dynamicOutLinks.ApprovalFlow ||
+                     this.$store.state.dynamicOutLinks.ApprovalFlow ||
+                     JSON.parse(localStorage.getItem('dynamicOutLinks')).ApprovalFlow||''
+        return ['1','3'].includes(type)
+    }
+  },
   methods: {
     reporteditMsg(params2, tp) {
       reportedit(params2).then(async (res) => {
@@ -19,6 +30,10 @@ export default {
             });
             window.open(href, "_blank");
           } else if (tp == "fb") {
+            if(this.isApprove){
+                await this.publishreport(res.Data.ReportId);
+                return 
+            }
             if (this.isMessagePost) {
               await this.publishreport(res.Data.ReportId);
               await reportMessageSend({
@@ -47,6 +62,10 @@ export default {
             });
             window.open(href, "_blank");
           } else if (tp == "fb") {
+            if(this.isApprove){
+                await this.publishreport(res.Data.ReportId);
+                return 
+            }
             if (this.isMessagePost) {
               await this.publishreport(res.Data.ReportId);
               await reportMessageSend({
@@ -99,6 +118,6 @@ export default {
         this.$message.success('刷新成功');
       }
 
-    },1000)
+    },1000),
   },
 };

+ 39 - 4
src/views/report_manage/reportEn/reportEditor.vue

@@ -1,6 +1,6 @@
 <template>
 	<div id="editreport">
-    <div class="leftitems">
+    <div class="leftitems" :class="{'full':!isRightFormShow,'block':isRightFormShow}">
       <div class="overview" :style="{marginBottom:value?'20px':'0'}">
         <p @click="value=!value">Overview
           <span><i :class="value?'el-icon-arrow-down':'el-icon-arrow-up'"></i></span>
@@ -30,7 +30,7 @@
 		  </div>
     </div>
 		
-		<div id="rightitems">
+		<div id="rightitems" v-show="isRightFormShow">
 			<div
 				style="
 					text-align: right;
@@ -85,7 +85,7 @@
 				</el-tabs>
 				<div
 					v-if="tabsactive == '基础信息'"
-					style="height: calc(100vh - 280px); overflow-y: auto"
+					style="height: calc(100vh - 315px); overflow-y: auto"
 				>
 					<el-form
 						:model="aeForm"
@@ -313,6 +313,13 @@
 				</div>
 			</div>
 		</div>
+		<span
+			class="slide-icon"
+			:class="{'slide-left':!isRightFormShow,'slide-right':isRightFormShow}"
+			@click="isRightFormShow = !isRightFormShow"
+		>
+			<i :class="{'el-icon-d-arrow-left':!isRightFormShow,'el-icon-d-arrow-right':isRightFormShow}"></i>
+		</span>
 
 		<!-- 设置英文信息弹窗 -->
 		<set-en-name-dia 
@@ -955,15 +962,22 @@ export default {
   box-sizing: border-box;
   .leftitems{
     flex: 1;
-		max-width: calc(100% - 500px);
     display: flex;
     flex-direction: column;
+	&.full{
+		max-width: calc(100vw - 200px - 120px);
+	}
+	&.block{
+		max-width: calc(100vw - 200px - 120px - 500px);
+	}
     .overview{
+		overflow: hidden;
       p{
         margin-bottom: 35px;
       }
     }
     #leftfroala{
+		overflow: hidden;
       flex: 1;
       #froala-editor{
 
@@ -980,6 +994,7 @@ export default {
 		overflow: hidden;
 		position: fixed;
 		right: 70px;
+		/* bottom:30px; */
 		#tabs {
 			padding: 0px 20px;
 			box-sizing: border-box;
@@ -1036,6 +1051,26 @@ export default {
       color: #C0C4CC;
     }
 	}
+	.slide-icon {
+		padding: 20px 0;
+		box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.3);
+		border-radius: 5px;
+		background-color: #fff;
+		cursor: pointer;
+		position: fixed;
+		top: 50%;
+		transform: translateY(-50%);
+		z-index: 99;
+		&:hover {
+			background-color: #e0e0e0;
+		}
+		&.slide-left {
+			right: 30px;
+		}
+		&.slide-right {
+			right: 540px;
+		}
+	}
 }
 </style>
 <style lang="scss">

+ 157 - 50
src/views/report_manage/reportEn/reportlist.vue

@@ -21,7 +21,85 @@
               @click="handlePullReport"
             >同步策略报告</el-button>
           </el-form-item>
+          <!-- 整合的筛选项 -->
           <el-form-item label="">
+            <el-popover 
+                placement="bottom" 
+                trigger="click" 
+                :visible-arrow="false"
+                popper-class="report-select-popover"
+                width="320" style="display: inline-block;">
+                <div class="select-wrap">
+                    <p>筛选项</p>
+                    <div class="select-item">
+                        <el-select
+                            v-model="searchform.timeType"
+                            placeholder="选择时间类型"
+                            size="medium"
+                            style="width:100%;"
+                        >
+                            <el-option label="发布时间" value="publish_time"></el-option>
+                            <el-option label="更新时间" value="modify_time"></el-option>
+                        </el-select>
+                    </div>
+                    <div class="select-item">
+                        <el-select
+                            v-model="searchform.frequency"
+                            placeholder="更新频度筛选"
+                            size="medium"
+                            clearable
+                            style="width:100%;"
+                        >
+                            <el-option v-for="item in frequencyArr" :key="item" :label="item" :value="item"></el-option>
+                        </el-select>
+                    </div>
+                    <div class="select-item">
+                        <el-cascader
+                            :options="optionsArr"
+                            :props="{
+                                value:'Id',
+                                label:'ClassifyName',
+                                children:'Child'
+                            }"
+                            v-model="searchform.classifynameArr"
+                            clearable
+                            placeholder="类型筛选"
+                            style="width:100%;"
+                        ></el-cascader>
+                    </div>
+                    <div class="select-item">
+                        <el-select
+                            v-model.number="searchform.publishState"
+                            placeholder="发布筛选"
+                            size="medium"
+                            clearable
+                            style="width:100%;"
+                        >
+                            <el-option label="已发布" :value="2"></el-option>
+                            <el-option label="未发布" :value="1"></el-option>
+                        </el-select>
+                    </div>
+                    <div class="select-item">
+                        <el-select
+                            v-permission="permissionBtn.enReportManageBtn.enReport_sendEmail"
+                            v-model.number="searchform.EmailState"
+                            placeholder="群发状态筛选"
+                            size="medium"
+                            clearable
+                            style="width:100%;"
+                        >
+                            <el-option label="未群发邮件" :value="1"></el-option>
+                            <el-option label="已群发邮件" :value="2"></el-option>
+                        </el-select>
+                    </div>
+                </div>
+                <div class="select-btn" slot="reference">
+                    <img src="~@/assets/icons/filter.svg">
+                    <span>筛选条件</span>
+                </div>
+            </el-popover>
+          </el-form-item>
+          <!-- <el-form-item label="">
             <el-select
               v-model="searchform.timeType"
               placeholder="选择时间类型"
@@ -31,7 +109,7 @@
               <el-option label="发布时间" value="publish_time"></el-option>
               <el-option label="更新时间" value="modify_time"></el-option>
             </el-select>
-          </el-form-item>
+          </el-form-item> -->
           <el-form-item label="">
             <el-date-picker
               v-model="searchform.dateValue"
@@ -45,7 +123,7 @@
               style="width: 280px"
             ></el-date-picker>
           </el-form-item>
-          <el-form-item label="">
+          <!-- <el-form-item label="">
             <el-select
               v-model="searchform.frequency"
               placeholder="更新频度筛选"
@@ -55,8 +133,8 @@
             >
               <el-option v-for="item in frequencyArr" :key="item" :label="item" :value="item"></el-option>
             </el-select>
-          </el-form-item>
-          <el-form-item label="">
+          </el-form-item> -->
+          <!-- <el-form-item label="">
             <el-cascader
               :options="optionsArr"
               :props="{
@@ -69,8 +147,8 @@
               placeholder="类型筛选"
               size="medium"
             ></el-cascader>
-          </el-form-item>
-          <el-form-item label="">
+          </el-form-item> -->
+          <!-- <el-form-item label="">
             <el-select
               v-model.number="searchform.publishState"
               placeholder="发布筛选"
@@ -81,8 +159,8 @@
               <el-option label="已发布" :value="2"></el-option>
               <el-option label="未发布" :value="1"></el-option>
             </el-select>
-          </el-form-item>
-          <el-form-item label="">
+          </el-form-item> -->
+          <!-- <el-form-item label="">
             <el-select
               v-permission="permissionBtn.enReportManageBtn.enReport_sendEmail"
               v-model.number="searchform.EmailState"
@@ -94,7 +172,7 @@
               <el-option label="未群发邮件" :value="1"></el-option>
               <el-option label="已群发邮件" :value="2"></el-option>
             </el-select>
-          </el-form-item>
+          </el-form-item> -->
           <el-form-item>
             <el-input
               placeholder="标题 / 创建人"
@@ -125,6 +203,7 @@
 					:sortable="item.sortable"
 					align="center"
 					:prop="item.key"
+					:fixed="item.fixed?item.fixed:false"
 				>
           <template #header>
             <span v-if="item.key==='Pv'">
@@ -421,57 +500,60 @@ export default {
       total: 0,
       tableColums:[
         {
-					label: '报告标题',
-					key: 'Title',
-          minwidthsty: 150
-				},
+            label: '报告标题',
+            key: 'Title',
+            minwidthsty: 150,
+            fixed:'left'
+        },
         {
-					label: '摘要',
-					key: 'Abstract',
-          minwidthsty: 150
-				},
+            label: '摘要',
+            key: 'Abstract',
+            minwidthsty: 150,
+            fixed:'left'
+        },
         {
-					label: '报告类型',
-					key: 'FullClassifyName',
-          minwidthsty: 120
-				},
+            label: '报告类型',
+            key: 'FullClassifyName',
+            minwidthsty: 120
+        },
         {
-					label: '创建人',
-					key: 'AdminRealName',
-          minwidthsty: 100
-				},
+            label: '创建人',
+            key: 'AdminRealName',
+            minwidthsty: 100
+        },
         {
-					label: '发布状态',
-					key: 'State',
-				},
+            label: '发布状态',
+            key: 'State',
+        },
         {
-					label: '发布时间',
-					key: 'PublishTime',
-          minwidthsty: 120
-				},
+            label: '发布时间',
+            key: 'PublishTime',
+            minwidthsty: 120
+        },
         {
-					label: '更新时间',
-					key: 'ModifyTime',
-          minwidthsty: 120
-				},
+            label: '更新时间',
+            key: 'ModifyTime',
+            minwidthsty: 120
+        },
         {
-					label: '期数',
-					key: 'Stage',
-					widthsty: 100
-				},
+            label: '期数',
+            key: 'Stage',
+            widthsty: 100
+        },
         {
-					label: '频度',
-					key: 'Frequency',
-				},
+            label: '频度',
+            key: 'Frequency',
+        },
         {
-					label: 'PV / UV',
-					key: 'Pv',
-				},
+            label: 'PV / UV',
+            key: 'Pv',
+        },
         {
-					label: '操作',
-					key: 'handle',
-          widthsty: 150
-				},
+            label: '操作',
+            key: 'handle',
+            widthsty: 150,
+            fixed:'right',
+        },
       ],
 
       popData:{
@@ -857,6 +939,15 @@ export default {
     width: 100%;
   }
 }
+.report-select-popover{
+    .select-wrap{
+          padding:8px;
+          margin:0 20px;
+          .select-item{
+              margin-top:20px;
+          }
+      }
+}
 </style>
 <style scoped lang="scss">
 #reportlist {
@@ -864,6 +955,22 @@ export default {
   .header .el-form-item {
     margin-bottom: 0;
   }
+  .header{
+      .select-btn{
+          cursor: pointer;
+          width:120px;
+          height: 36px;
+          text-align: center;
+          background-color: #ECF2FE;
+          border-radius: 4px;
+          box-sizing: border-box;
+          line-height:36px;
+          img,span{
+            display: inline-block;
+            vertical-align: middle;
+          }
+      }
+  }
   .opt-btns {
     span,
     a {

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

@@ -3,7 +3,7 @@
         <div class="top-wrap">
             <el-button type="primary" v-permission="permissionBtn.enChartPermission.enChartPermission_save"
                 @click="showEditBreed=true;getParentVarietyList()">添加品种</el-button>
-            <el-input placeholder="品种名称" v-model="searchVal" style="max-width: 520px; float: right" @change="handleSearch" clearable>
+            <el-input placeholder="品种名称" v-model="searchVal" style="max-width: 262px; float: right" @change="handleSearch" clearable>
                 <i slot="prefix" class="el-input__icon el-icon-search"></i>
             </el-input>
         </div>

+ 4 - 0
src/views/report_manage/reportdtl.vue

@@ -232,5 +232,9 @@
 				list-style-position: inside !important;
 			}
 		}
+        @media (max-width:1400px) {
+            margin-right: 100px;
+            
+        }
 	}
 </style>

+ 282 - 102
src/views/report_manage/reportlist.vue

@@ -2,7 +2,7 @@
   <div id="reportlist">
     <el-card class="box-card">
       <div slot="header" class="header">
-        <el-form :inline="true" :model="searchform" @submit.native.prevent>
+        <el-form :inline="true" :model="searchform" @submit.native.prevent style="display:flex;">
           <el-form-item label="">
             <el-button
               v-permission="permissionBtn.reportManageBtn.reportManage_reportAdd"
@@ -11,7 +11,6 @@
               @click="$router.push({ path: '/addreportNew' })"
               >添加研报</el-button
             >
-            <!-- <el-button type="primary" plain size="medium" @click="$router.push({path:'/addreport'})">添加研报(旧版)</el-button> -->
             <el-button
               v-permission="permissionBtn.reportManageBtn.reportManage_dayWeekReportAdd"
               type="primary"
@@ -19,7 +18,6 @@
               @click="$router.push({ path: '/dayorweek' })"
               >添加晨报/周报</el-button
             >
-            <!-- <el-button type="primary" size="medium" @click="publishreport">发 布</el-button> -->
             <template v-if="Role === 'rai_researcher'">
               <el-button
                 type="primary"
@@ -33,7 +31,107 @@
               </a>
             </template>
           </el-form-item>
+          <!-- 整合的筛选项 -->
           <el-form-item label="">
+            <el-popover 
+                placement="bottom" 
+                trigger="click" 
+                :visible-arrow="false"
+                popper-class="report-select-popover"
+                width="320" style="display: inline-block;">
+                <div class="select-wrap">
+                    <p>筛选项</p>
+                    <div class="select-item">
+                        <el-select
+                            v-model="searchform.timeType"
+                            placeholder="选择时间类型"
+                            size="medium"
+                            style="width:100%;"
+                            @change="search"
+                        >
+                            <el-option :label="isApprove?'审批时间':'发布时间'" value="publish_time"></el-option>
+                            <el-option label="更新时间" value="modify_time"></el-option>
+                        </el-select>
+                    </div>
+                    <div class="select-item">
+                        <el-select
+                            @change="search"
+                            v-model="searchform.frequency"
+                            placeholder="更新频度筛选"
+                            size="medium"
+                            clearable
+                            style="width:100%;"
+                        >
+                            <el-option label="年度" value="年度"></el-option>
+                            <el-option label="半年度" value="半年度"></el-option>
+                            <el-option label="季度" value="季度"></el-option>
+                            <el-option label="月度" value="月度"></el-option>
+                            <el-option label="双周度" value="双周度"></el-option>
+                            <el-option label="周度" value="周度"></el-option>
+                            <el-option label="日度" value="日度"></el-option>
+                            <el-option label="不定时" value="不定时"></el-option>
+                        </el-select>
+                    </div>
+                    <div class="select-item">
+                        <el-cascader
+                            @change="search"
+                            :options="optionsArr"
+                            v-model="searchform.classifynameArr"
+                            clearable
+                            placeholder="类型筛选"
+                            style="width:100%;"
+                        ></el-cascader>
+                    </div>
+                    <div class="select-item" v-if="!isApprove">
+                        <el-select 
+                            v-model.number="searchform.publishState"
+                            placeholder="发布筛选"
+                            size="medium"
+                            clearable
+                            style="width:100%;"
+                            @change="search"
+                        >
+                            <el-option label="已发布" :value="2"></el-option>
+                            <el-option label="未发布" :value="1"></el-option>
+                        </el-select>
+                    </div>
+                    <div class="select-item" v-if="isApprove">
+                        <el-select
+                            v-model.number="searchform.publishState"
+                            placeholder="状态筛选"
+                            size="medium"
+                            clearable
+                            style="width:100%;"
+                            @change="search"
+                        >
+                            <el-option label="待提交" :value="1"></el-option>
+                            <el-option label="待审批" :value="2"></el-option>
+                            <el-option label="已审批" :value="4"></el-option>
+                            <el-option label="已驳回" :value="3"></el-option>
+                        </el-select>
+                    </div>
+                    <div class="select-item">
+                        <el-select
+                            v-permission="permissionBtn.reportManageBtn.reportManage_reportList_sendTime"
+                            @change="search"
+                            v-model.number="searchform.msgIsSend"
+                            placeholder="推送消息状态"
+                            size="medium"
+                            clearable
+                            style="width:100%;"
+                        >
+                            <el-option label="未推送消息" :value="1"></el-option>
+                            <el-option label="已推送消息" :value="2"></el-option>
+                        </el-select>
+                    </div>
+                </div>
+                <div class="select-btn" slot="reference">
+                    <img src="~@/assets/icons/filter.svg">
+                    <span>筛选条件</span>
+                </div>
+            </el-popover>
+          </el-form-item>
+          <!-- <el-form-item label="">
             <el-select
               v-model="searchform.timeType"
               placeholder="选择时间类型"
@@ -41,10 +139,10 @@
               style="width:110px"
               @change="search"
             >
-              <el-option label="发布时间" value="publish_time"></el-option>
+              <el-option :label="isApprove?'审批时间':'发布时间'" value="publish_time"></el-option>
               <el-option label="更新时间" value="modify_time"></el-option>
             </el-select>
-          </el-form-item>
+          </el-form-item> -->
           <el-form-item label="">
             <el-date-picker
               @change="search"
@@ -59,7 +157,7 @@
               style="width: 280px"
             ></el-date-picker>
           </el-form-item>
-          <el-form-item label="">
+          <!-- <el-form-item label="">
             <el-select
               @change="search"
               v-model="searchform.frequency"
@@ -77,8 +175,8 @@
               <el-option label="日度" value="日度"></el-option>
               <el-option label="不定时" value="不定时"></el-option>
             </el-select>
-          </el-form-item>
-          <el-form-item label="">
+          </el-form-item> -->
+          <!-- <el-form-item label="">
             <el-cascader
               @change="search"
               :options="optionsArr"
@@ -88,7 +186,9 @@
               size="medium"
             ></el-cascader>
           </el-form-item>
-          <el-form-item label="">
+          <el-form-item label="" v-if="!isApprove">
+          </el-form-item> -->
+          <!-- <el-form-item label="">
             <el-select
               v-model.number="searchform.publishState"
               placeholder="发布筛选"
@@ -101,7 +201,24 @@
               <el-option label="未发布" :value="1"></el-option>
             </el-select>
           </el-form-item>
+          <el-form-item label="" v-if="isApprove">
+            <el-select
+              v-model.number="searchform.publishState"
+              placeholder="状态筛选"
+              size="medium"
+              clearable
+              style="width: 140px"
+              @change="search"
+            >
+              <el-option label="待提交" :value="1"></el-option>
+              <el-option label="待审批" :value="2"></el-option>
+              <el-option label="已审批" :value="4"></el-option>
+              <el-option label="已驳回" :value="3"></el-option>
+            </el-select>
+          </el-form-item>
           <el-form-item label="">
+          </el-form-item> -->
+          <!-- <el-form-item label="">
             <el-select
               v-permission="permissionBtn.reportManageBtn.reportManage_reportList_sendTime"
               @change="search"
@@ -114,17 +231,16 @@
               <el-option label="未推送消息" :value="1"></el-option>
               <el-option label="已推送消息" :value="2"></el-option>
             </el-select>
-          </el-form-item>
-          <el-form-item>
+          </el-form-item> -->
+          <el-form-item style="flex:1;text-align: right;">
             <el-input
               @input="search"
               placeholder="标题 / 创建人"
               v-model="searchform.key_word"
               clearable
               size="medium"
-            >
-              <i class="el-icon-search" slot="prefix" @click="search"></i>
-            </el-input>
+              prefix-icon="el-icon-search"
+            />
           </el-form-item>
           <!-- <el-form-item><el-button type="primary" size="medium" @click.native="search">搜索</el-button></el-form-item> -->
         </el-form>
@@ -146,6 +262,7 @@
             label="报告标题"
             align="center"
             min-width="140"
+            fixed="left"
           >
             <template slot-scope="scope">
               <div @click="lookreportdtl(scope.row)">
@@ -180,6 +297,7 @@
             label="摘要"
             align="center"
             min-width="140"
+            fixed="left"
           ></el-table-column>
           <el-table-column label="报告类型" align="center" min-width="140">
             <template slot-scope="scope"
@@ -195,7 +313,7 @@
             align="center"
             min-width="100"
           ></el-table-column>
-          <el-table-column label="发布状态" align="center">
+          <el-table-column label="发布状态" align="center" v-if="!isApprove">
             <template slot-scope="scope">
               <span v-if="scope.row.State == '2'" style="color: #46c371"
                 >已发布</span
@@ -203,7 +321,17 @@
               <span v-if="scope.row.State == '1'">未发布</span>
             </template>
           </el-table-column>
+          <el-table-column label="状态" align="center" v-if="isApprove">
+            <template slot-scope="scope">
+                <span v-if="scope.row.State == '1'">待提交</span>
+                <span v-if="scope.row.State == '2'">待审批</span>
+                <span v-if="scope.row.State == '4'">已审批</span>
+                <span v-if="scope.row.State == '3'">已驳回</span>
+            </template>
+          </el-table-column>
+
           <el-table-column
+            v-if="!isApprove"
             prop="PublishTime"
             label="发布时间"
             min-width="124"
@@ -217,6 +345,19 @@
               </svg>
             </template>
           </el-table-column>
+          <el-table-column
+            v-if="isApprove"
+            prop="PublishTime"
+            label="审批时间"
+            min-width="124"
+            align="center"
+            :formatter="formatterColumn"
+          >
+            <template slot-scope="scope">
+                <span>{{scope.row.PrePublishTime?scope.row.PrePublishTime:scope.row.PublishTime|formatTime}}</span>
+            </template>
+          </el-table-column>
+
           <el-table-column v-if="permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_reportList_sendTime)"
             prop="MsgSendTime"
             label="报告推送时间"
@@ -256,98 +397,99 @@
               >{{ hasUV? scope.row.Pv+'/'+scope.row.Uv:scope.row.Pv }}</template
             >
           </el-table-column>
-          <el-table-column label="操作" align="center" min-width="130">
+          <el-table-column label="操作" align="center" min-width="130" fixed="right">
             <template slot-scope="scope">
               <div class="opt-btns">
-                <template
-                  v-if="scope.row.State == 1"
-                >
-                  <!-- <i class="el-icon-edit-outline" @click="$router.push({name:'编辑研报',query:{id:scope.row.id}})"></i> -->
-                  <span
-                    v-permission="permissionBtn.reportManageBtn.reportManage_publish"
-                    class="editsty"
-                    @click="publishreport(scope.row)"
-                    v-if="scope.row.CanEdit"
-                    >发布</span
-                  >
-                  <span
-                    v-permission="permissionBtn.reportManageBtn.reportManage_reportEdit"
-                    class="editsty"
-                    @click="editreport(scope.row, 'edit')"
-                    v-if="scope.row.CanEdit"
-                    >编辑</span
-                  >
-                  <span
-                    v-permission="permissionBtn.reportManageBtn.reportManage_reportEdit"
-                    class="editsty"
-                    @click="editreport(scope.row, 'editing')"
-                    v-else
-                    >{{ scope.row.Editor || "" }}编辑中...</span
-                  >
-                  <!-- <i class="el-icon-delete" @click="deleteitem(scope.row)"></i> -->
-                  <span
-                    v-permission="permissionBtn.reportManageBtn.reportManage_reportDel"
-                    class="deletesty"
-                    @click="deleteitem(scope.row)"
-                    v-if="scope.row.CanEdit"
-                    >删除</span
-                  >
+                <!--不走审批流的按钮-->
+                <template v-if="!isApprove">
+                    <template v-if="scope.row.State == 1">
+                        <span v-permission="permissionBtn.reportManageBtn.reportManage_publish" class="editsty"
+                            @click="publishreport(scope.row)" v-if="scope.row.CanEdit">发布</span>
+                        <span v-permission="permissionBtn.reportManageBtn.reportManage_reportEdit" class="editsty"
+                            @click="editreport(scope.row, 'edit')" v-if="scope.row.CanEdit">编辑</span>
+                        <span v-permission="permissionBtn.reportManageBtn.reportManage_reportEdit" class="editsty"
+                            @click="editreport(scope.row, 'editing')" v-else>{{ scope.row.Editor || "" }}编辑中...</span>
+                        <span v-permission="permissionBtn.reportManageBtn.reportManage_reportDel" class="deletesty"
+                            @click="deleteitem(scope.row)" v-if="scope.row.CanEdit">删除</span>
+                    </template>
+                    <template v-if="scope.row.State == 2">
+                        <span
+                            v-if="permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_cancelPublish)"
+                            @click="canclepublish(scope.row)" style="color: red; cursor: pointer">取消发布</span>
+                        <span
+                            v-if="scope.row.MsgIsSend == 0 && permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_sendMsg)"
+                            style="color: #4099ef; cursor: pointer" @click="messageSend(scope.row)">推送消息</span>
+                        <span
+                            v-else-if="scope.row.MsgIsSend != 0&&permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_sendMsg)"
+                            style="color: red">已推送消息</span>
+                    </template>
+                    <span style="color: #46c371; cursor: pointer"
+                        v-if="!['晨报', '周报'].includes(scope.row.ClassifyNameFirst)&&permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_audioUpload)"
+                        @click="openupload(scope.row.Id)">音频上传</span>
+                    <a v-permission="permissionBtn.reportManageBtn.reportManage_audioDownload"
+                        :href="hostapi + '?ReportId=' + parseInt(scope.row.Id)" v-if="
+                        scope.row.VideoUrl &&
+                        !['晨报', '周报'].includes(scope.row.ClassifyNameFirst)
+                    " :download="scope.row.VideoName" style="cursor: pointer; color: #4099ef">音频下载</a>
+                    <span v-permission="permissionBtn.reportManageBtn.reportManage_audioDownload"
+                        style="cursor: pointer; color: #4099ef" v-if="
+                        ['晨报', '周报'].includes(scope.row.ClassifyNameFirst) &&
+                        scope.row.ChapterVideoList.length > 0
+                    " @click="handleShowDownloadAudio(scope.row)">音频下载</span>
                 </template>
-                <template v-if="scope.row.State == 2">
-                  <span v-if="permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_cancelPublish)"
-                    @click="canclepublish(scope.row)"
-                    style="color: red; cursor: pointer"
-                    >取消发布</span
-                  >
-                  <!-- <template v-if="scope.row.ClassifyNameFirst!='周报'"> -->
-                  <span
-                    v-if="scope.row.MsgIsSend == 0 && permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_sendMsg)"
-                    style="color: #4099ef; cursor: pointer"
-                    @click="messageSend(scope.row)"
-                    >推送消息</span
-                  >
-                  <span v-else-if="scope.row.MsgIsSend != 0&&permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_sendMsg)"
-                    style="color: red">已推送消息</span>
-                  <!-- </template> -->
-                  <!-- <template v-else>
-										<span v-if="scope.row.MsgIsSend=='0'" @click="gosendTemplateMsg(scope.row)" style="color:#4099ef; cursor:pointer;">推送模版消息</span>
-										<span v-else style="color:red;">已推送模版消息</span>
-									</template> -->
+                <!--走审批流的按钮,权限与原先按钮对应-->
+                <template v-if="isApprove">
+                    <!--待提交-->
+                    <template v-if="scope.row.State===1">
+                        <span v-permission="permissionBtn.reportManageBtn.reportManage_publish"
+                            @click="publishreport(scope.row)"
+                            class="editsty">提交</span>
+                        <span v-permission="permissionBtn.reportManageBtn.reportManage_reportEdit" class="editsty"
+                            @click="editreport(scope.row, 'edit')" v-if="scope.row.CanEdit">编辑</span>
+                        <span v-permission="permissionBtn.reportManageBtn.reportManage_reportEdit" class="editsty"
+                            @click="editreport(scope.row, 'editing')" v-else>{{ scope.row.Editor || "" }}编辑中...</span>
+                        <span v-permission="permissionBtn.reportManageBtn.reportManage_reportDel" class="deletesty"
+                            @click="deleteitem(scope.row)" v-if="scope.row.CanEdit">删除</span>
+                    </template>
+                    <!--已提交(待审批,已审批)-->
+                    <template v-if="[2,4].includes(scope.row.State)">
+                        <span
+                            v-if="permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_cancelPublish)"
+                            @click="canclepublish(scope.row)"
+                            class="editsty">撤销</span>
+                        <template v-if="scope.row.State!==2">
+                            <span
+                                v-if="scope.row.MsgIsSend == 0 && permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_sendMsg)"
+                                style="color: #4099ef; cursor: pointer" @click="messageSend(scope.row)">推送消息</span>
+                            <span
+                                v-else-if="scope.row.MsgIsSend != 0&&permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_sendMsg)"
+                                style="color: red">已推送消息</span>
+                        </template>
+                    </template>
 
-                  <!-- <span v-if="scope.row.MsgIsSend=='0'" @click="gosendTemplateMsg(scope.row)" style="color:#4099ef; cursor:pointer;">推送模版消息</span>
-									<span v-else style="color:red;">已推送模版消息</span>
-									<template v-if="scope.row.NeedThsMsg!=0">
-									<span v-if="scope.row.ThsMsgIsSend == 0" @click="messagePush(scope.row)" style="color:#4099ef; cursor:pointer;">推送客群消息</span>
-									<span v-else style="color:red;">已推送客群消息</span>
-									</template> -->
+                    <!--已驳回则只显示撤销按钮-->
+                    <template v-if="scope.row.State===3">
+                        <span v-permission="permissionBtn.reportManageBtn.reportManage_publish"
+                            @click="canclepublish(scope.row)"
+                            class="editsty">撤销</span>
+                    </template>
+                    <!--音频上传/下载 按原先逻辑-->
+                    <template v-if="scope.row.State!==3">
+                        <span style="color: #46c371; cursor: pointer"
+                            v-if="!['晨报', '周报'].includes(scope.row.ClassifyNameFirst)&&permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_audioUpload)"
+                            @click="openupload(scope.row.Id)">音频上传</span>
+                        <a v-permission="permissionBtn.reportManageBtn.reportManage_audioDownload"
+                            :href="hostapi + '?ReportId=' + parseInt(scope.row.Id)" v-if="
+                            scope.row.VideoUrl &&
+                            !['晨报', '周报'].includes(scope.row.ClassifyNameFirst)
+                        " :download="scope.row.VideoName" style="cursor: pointer; color: #4099ef">音频下载</a>
+                        <span v-permission="permissionBtn.reportManageBtn.reportManage_audioDownload"
+                            style="cursor: pointer; color: #4099ef" v-if="
+                            ['晨报', '周报'].includes(scope.row.ClassifyNameFirst) &&
+                            scope.row.ChapterVideoList.length > 0
+                        " @click="handleShowDownloadAudio(scope.row)">音频下载</span>
+                    </template>
                 </template>
-                <span
-                  style="color: #46c371; cursor: pointer"
-                  v-if="!['晨报', '周报'].includes(scope.row.ClassifyNameFirst)&&permissionBtn.checkPermissionBtn(permissionBtn.reportManageBtn.reportManage_audioUpload)"
-                  @click="openupload(scope.row.Id)"
-                  >音频上传</span
-                >
-                <a
-                  v-permission="permissionBtn.reportManageBtn.reportManage_audioDownload"
-                  :href="hostapi + '?ReportId=' + parseInt(scope.row.Id)"
-                  v-if="
-                    scope.row.VideoUrl &&
-                    !['晨报', '周报'].includes(scope.row.ClassifyNameFirst)
-                  "
-                  :download="scope.row.VideoName"
-                  style="cursor: pointer; color: #4099ef"
-                  >音频下载</a
-                >
-                <span
-                  v-permission="permissionBtn.reportManageBtn.reportManage_audioDownload"
-                  style="cursor: pointer; color: #4099ef"
-                  v-if="
-                    ['晨报', '周报'].includes(scope.row.ClassifyNameFirst) &&
-                    scope.row.ChapterVideoList.length > 0
-                  "
-                  @click="handleShowDownloadAudio(scope.row)"
-                  >音频下载</span
-                >
               </div>
             </template>
           </el-table-column>
@@ -615,6 +757,13 @@ export default {
     //是否有UV
     hasUV(){
       return this.permissionBtn.checkPermissionBtn(this.permissionBtn.reportManageBtn.reportManage_reportList_uv)
+    },
+    //是否开启审批流,若开启,发布相关按钮,筛选项改变
+    isApprove(){
+        const type = this.$setting.dynamicOutLinks.ApprovalFlow ||
+                     this.$store.state.dynamicOutLinks.ApprovalFlow ||
+                     JSON.parse(localStorage.getItem('dynamicOutLinks')).ApprovalFlow||''
+        return ['1','3'].includes(type)
     }
   },
   data() {
@@ -662,6 +811,8 @@ export default {
       showPublish: false,
       isDSFB:false,//是否为定时发布
       tableKey:0,
+
+      //isApprove:false,//是否开启审批流,若开启,发布相关按钮,筛选项改变
     };
   },
   mounted() {
@@ -948,6 +1099,10 @@ export default {
         // this.handlePublic(1)
         return;
       }
+      if(this.isApprove){
+        this.handlePublic(1)
+        return
+      }
       const isPost = this.permissionBtn.checkPermissionBtn(this.permissionBtn.reportManageBtn.reportManage_sendMsg)
       if(isPost){
           this.showPublish = true;
@@ -1142,6 +1297,15 @@ export default {
     white-space: normal;
   }
 }
+.report-select-popover{
+    .select-wrap{
+          padding:8px;
+          margin:0 20px;
+          .select-item{
+              margin-top:20px;
+          }
+      }
+}
 </style>
 <style scoped lang="scss">
 #reportlist {
@@ -1149,6 +1313,22 @@ export default {
   .header .el-form-item {
     margin-bottom: 0;
   }
+  .header{
+      .select-btn{
+          cursor: pointer;
+          width:120px;
+          height: 36px;
+          text-align: center;
+          background-color: #ECF2FE;
+          border-radius: 4px;
+          box-sizing: border-box;
+          line-height:36px;
+          img,span{
+            display: inline-block;
+            vertical-align: middle;
+          }
+      }
+  }
   .opt-btns {
     span,
     a {

+ 30 - 8
src/views/smartReport/editReport.vue

@@ -20,14 +20,23 @@
                     <img src="~@/assets/img/smartReport/icon01.png" alt="">
                     <span>存草稿</span>
                 </li>
-                <li class="action-item" @click="handlePublishOpt('dsfb')">
-                    <img src="~@/assets/img/smartReport/icon01.png" alt="">
-                    <span>定时发布</span>
-                </li>
-                <li class="action-item" @click="handlePublishOpt('fb')">
-                    <img src="~@/assets/img/smartReport/icon01.png" alt="">
-                    <span>发布</span>
-                </li>
+                <template v-if="!isApprove">
+                    <li class="action-item" @click="handlePublishOpt('dsfb')">
+                        <img src="~@/assets/img/smartReport/icon01.png" alt="">
+                        <span>定时发布</span>
+                    </li>
+                    <li class="action-item" @click="handlePublishOpt('fb')">
+                        <img src="~@/assets/img/smartReport/icon01.png" alt="">
+                        <span>发布</span>
+                    </li>
+                </template>
+                <template v-if="isApprove">
+                    <li class="action-item" @click="handlePublishOpt('fb')">
+                        <img src="~@/assets/img/smartReport/icon01.png" alt="">
+                        <span>提交</span>
+                    </li>
+                </template>
+                
             </ul>
         </div>
         <div class="main-wrap">
@@ -259,6 +268,15 @@ export default {
             deep:true
         }
     },
+    computed:{
+        //是否开启审批流,若开启,发布相关按钮,筛选项改变
+        isApprove(){
+            const type = this.$setting.dynamicOutLinks.ApprovalFlow ||
+                        this.$store.state.dynamicOutLinks.ApprovalFlow ||
+                        JSON.parse(localStorage.getItem('dynamicOutLinks')).ApprovalFlow||''
+            return ['2','3'].includes(type)
+        }
+    },
     data() {
         return {
             reportInfo:null,
@@ -854,6 +872,10 @@ export default {
                 return
             }
             // 发布
+            if(this.isApprove){
+                this.reportPublish({sendMsg:false})
+                return
+            }
             if(this.reportInfo.MsgIsSend==1){//该报告已经推送过模板消息
                 this.reportPublish({sendMsg:false})
             }else{

+ 132 - 64
src/views/smartReport/reportList.vue

@@ -19,7 +19,7 @@
                     style="width:110px"
                     @change="search"
                     >
-                    <el-option label="发布时间" value="publish_time"></el-option>
+                    <el-option :label="isApprove?'审批时间':'发布时间'" value="publish_time"></el-option>
                     <el-option label="更新时间" value="modify_time"></el-option>
                     </el-select>
                 </el-form-item>
@@ -66,7 +66,7 @@
                         size="medium"
                     />
                 </el-form-item>
-                <el-form-item label="">
+                <el-form-item label="" v-if="!isApprove">
                     <el-select
                         v-model.number="searchform.publishState"
                         placeholder="发布筛选"
@@ -79,6 +79,21 @@
                         <el-option label="未发布" :value="1"></el-option>
                     </el-select>
                 </el-form-item>
+                <el-form-item label="" v-if="isApprove">
+                    <el-select
+                        v-model.number="searchform.publishState"
+                        placeholder="状态筛选"
+                        size="medium"
+                        clearable
+                        style="width: 140px"
+                        @change="search"
+                    >
+                        <el-option label="待提交" :value="1"></el-option>
+                        <el-option label="待审批" :value="2"></el-option>
+                        <el-option label="已审批" :value="4"></el-option>
+                        <el-option label="已驳回" :value="3"></el-option>
+                    </el-select>
+                </el-form-item>
                 <!-- <el-form-item label="">
                     <el-select
                         v-permission="permissionBtn.smartReportManageBtn.reportManage_reportList_sendTime"
@@ -172,7 +187,7 @@
                     align="center"
                     min-width="100"
                 ></el-table-column>
-                <el-table-column label="发布状态" align="center">
+                <el-table-column label="发布状态" align="center" v-if="!isApprove">
                     <template slot-scope="scope">
                     <span v-if="scope.row.State == '2'" style="color: #46c371"
                         >已发布</span
@@ -180,7 +195,15 @@
                     <span v-if="scope.row.State == '1'">未发布</span>
                     </template>
                 </el-table-column>
-                <el-table-column
+                <el-table-column label="状态" align="center" v-if="isApprove">
+                    <template slot-scope="scope">
+                        <span v-if="scope.row.State == '1'">待提交</span>
+                        <span v-if="scope.row.State == '2'">待审批</span>
+                        <span v-if="scope.row.State == '4'">已审批</span>
+                        <span v-if="scope.row.State == '3'">已驳回</span>
+                    </template>
+                </el-table-column>
+                <el-table-column v-if="!isApprove"
                     prop="PublishTime"
                     label="发布时间"
                     min-width="124"
@@ -194,6 +217,18 @@
                     </svg>
                     </template>
                 </el-table-column>
+                <el-table-column
+                    v-if="isApprove"
+                    prop="PublishTime"
+                    label="审批时间"
+                    min-width="124"
+                    align="center"
+                    :formatter="formatterColumn"
+                >
+                    <template slot-scope="scope">
+                        <span>{{scope.row.PrePublishTime?scope.row.PrePublishTime:scope.row.PublishTime|formatTime}}</span>
+                    </template>
+                </el-table-column>
                 <!-- <el-table-column v-if="permissionBtn.checkPermissionBtn(permissionBtn.smartReportManageBtn.reportManage_reportList_sendTime)"
                     prop="MsgSendTime"
                     label="报告推送时间"
@@ -230,44 +265,28 @@
                 <el-table-column label="操作" align="center" min-width="130">
                     <template slot-scope="scope">
                     <div class="opt-btns">
-                        <template
-                        v-if="scope.row.State == 1"
-                        >
-                        <span
-                            v-permission="permissionBtn.smartReportManageBtn.reportManage_publish"
-                            class="editsty"
-                            @click="handlePublishReportOpt(scope.row)"
-                            v-if="scope.row.CanEdit"
-                            >发布</span
-                        >
-                        <span
-                            v-permission="permissionBtn.smartReportManageBtn.reportManage_reportEdit"
-                            class="editsty"
-                            @click="editreport(scope.row, 'edit')"
-                            v-if="scope.row.CanEdit"
-                            >编辑</span
-                        >
-                        <span
-                            v-permission="permissionBtn.smartReportManageBtn.reportManage_reportEdit"
-                            class="editsty"
-                            @click="editreport(scope.row, 'editing')"
-                            v-else
-                            >{{ scope.row.Editor || "" }}编辑中...</span
-                        >
-                        <span
-                            v-permission="permissionBtn.smartReportManageBtn.reportManage_reportDel"
-                            class="deletesty"
-                            @click="handleDelReport(scope.row)"
-                            v-if="scope.row.CanEdit"
-                            >删除</span
-                        >
-                        </template>
-                        <template v-if="scope.row.State == 2">
-                        <span v-if="permissionBtn.checkPermissionBtn(permissionBtn.smartReportManageBtn.reportManage_cancelPublish)"
-                            @click="handleReportPublishCancel(scope.row)"
-                            style="color: red; cursor: pointer"
-                            >取消发布</span>
-                        <!-- <span
+                        <!-- 不走审批流的按钮 -->
+                        <template v-if="!isApprove">
+                            <template v-if="scope.row.State == 1">
+                                <span v-permission="permissionBtn.smartReportManageBtn.reportManage_publish"
+                                    class="editsty" @click="handlePublishReportOpt(scope.row)"
+                                    v-if="scope.row.CanEdit">发布</span>
+                                <span v-permission="permissionBtn.smartReportManageBtn.reportManage_reportEdit"
+                                    class="editsty" @click="editreport(scope.row, 'edit')"
+                                    v-if="scope.row.CanEdit">编辑</span>
+                                <span v-permission="permissionBtn.smartReportManageBtn.reportManage_reportEdit"
+                                    class="editsty" @click="editreport(scope.row, 'editing')"
+                                    v-else>{{ scope.row.Editor || "" }}编辑中...</span>
+                                <span v-permission="permissionBtn.smartReportManageBtn.reportManage_reportDel"
+                                    class="deletesty" @click="handleDelReport(scope.row)"
+                                    v-if="scope.row.CanEdit">删除</span>
+                            </template>
+                            <template v-if="scope.row.State == 2">
+                                <span
+                                    v-if="permissionBtn.checkPermissionBtn(permissionBtn.smartReportManageBtn.reportManage_cancelPublish)"
+                                    @click="handleReportPublishCancel(scope.row)"
+                                    style="color: red; cursor: pointer">取消发布</span>
+                                <!-- <span
                             v-if="scope.row.MsgIsSend == 0 && permissionBtn.checkPermissionBtn(permissionBtn.smartReportManageBtn.reportManage_sendMsg)"
                             style="color: #4099ef; cursor: pointer"
                             @click="handleSendMsg(scope.row)"
@@ -275,29 +294,67 @@
                         >
                         <span v-else-if="scope.row.MsgIsSend != 0&&permissionBtn.checkPermissionBtn(permissionBtn.smartReportManageBtn.reportManage_sendMsg)"
                             style="color: red">已推送消息</span> -->
+                            </template>
+                            <span style="color: #46c371; cursor: pointer;display:inline-block"
+                                v-if="permissionBtn.checkPermissionBtn(permissionBtn.smartReportManageBtn.reportManage_audioUpload)"
+                                @click="openupload(scope.row.SmartReportId)">音频上传</span>
+                            <span style="cursor: pointer; color: #4099ef;display:inline-block"
+                                v-permission="permissionBtn.smartReportManageBtn.reportManage_audioDownload"
+                                v-if="scope.row.VideoUrl" @click="handleDownloadVoice(scope.row)">
+                                音频下载
+                            </span>
+                            <!-- <a
+                                v-permission="permissionBtn.smartReportManageBtn.reportManage_audioDownload"
+                                :href="scope.row.VideoUrl"
+                                v-if="scope.row.VideoUrl"
+                                :download="scope.row.VideoName"
+                                style="cursor: pointer; color: #4099ef"
+                                >音频下载</a
+                                > -->
+                        </template>
+                        <!-- 走审批流的按钮 -->
+                        <template v-if="isApprove">
+                            <!-- 待提交 -->
+                            <template v-if="scope.row.State == 1">
+                                <span v-permission="permissionBtn.smartReportManageBtn.reportManage_publish"
+                                    class="editsty" @click="handlePublishReportOpt(scope.row)"
+                                    v-if="scope.row.CanEdit">提交</span>
+                                <span v-permission="permissionBtn.smartReportManageBtn.reportManage_reportEdit"
+                                    class="editsty" @click="editreport(scope.row, 'edit')"
+                                    v-if="scope.row.CanEdit">编辑</span>
+                                <span v-permission="permissionBtn.smartReportManageBtn.reportManage_reportEdit"
+                                    class="editsty" @click="editreport(scope.row, 'editing')"
+                                    v-else>{{ scope.row.Editor || "" }}编辑中...</span>
+                                <span v-permission="permissionBtn.smartReportManageBtn.reportManage_reportDel"
+                                    class="deletesty" @click="handleDelReport(scope.row)"
+                                    v-if="scope.row.CanEdit">删除</span>
+                            </template>
+                            <!--已提交(待审批,已审批)-->
+                            <template v-if="[2,4].includes(scope.row.State)">
+                                <span
+                                    v-if="permissionBtn.checkPermissionBtn(permissionBtn.smartReportManageBtn.reportManage_cancelPublish)"
+                                    @click="handleReportPublishCancel(scope.row)"
+                                    style="color: red; cursor: pointer">撤销
+                                </span>
+                            </template>
+                             <!--已驳回则只显示撤销按钮-->
+                            <template v-if="scope.row.State===3">
+                                <span v-permission="permissionBtn.smartReportManageBtn.reportManage_publish"
+                                @click="handleReportPublishCancel(scope.row)"
+                                    class="editsty">撤销</span>
+                            </template>
+                            <!--音频上传/下载 按原先逻辑-->
+                            <template v-if="scope.row.State!==3">
+                                <span style="color: #46c371; cursor: pointer;display:inline-block"
+                                    v-if="permissionBtn.checkPermissionBtn(permissionBtn.smartReportManageBtn.reportManage_audioUpload)"
+                                    @click="openupload(scope.row.SmartReportId)">音频上传</span>
+                                <span style="cursor: pointer; color: #4099ef;display:inline-block"
+                                    v-permission="permissionBtn.smartReportManageBtn.reportManage_audioDownload"
+                                    v-if="scope.row.VideoUrl" @click="handleDownloadVoice(scope.row)">
+                                    音频下载
+                                </span>
+                            </template>
                         </template>
-                        <span
-                        style="color: #46c371; cursor: pointer;display:inline-block"
-                        v-if="permissionBtn.checkPermissionBtn(permissionBtn.smartReportManageBtn.reportManage_audioUpload)"
-                        @click="openupload(scope.row.SmartReportId)"
-                        >音频上传</span
-                        >
-                        <span 
-                            style="cursor: pointer; color: #4099ef;display:inline-block" 
-                            v-permission="permissionBtn.smartReportManageBtn.reportManage_audioDownload"
-                            v-if="scope.row.VideoUrl"
-                            @click="handleDownloadVoice(scope.row)"
-                        >
-                            音频下载
-                        </span>
-                        <!-- <a
-                        v-permission="permissionBtn.smartReportManageBtn.reportManage_audioDownload"
-                        :href="scope.row.VideoUrl"
-                        v-if="scope.row.VideoUrl"
-                        :download="scope.row.VideoName"
-                        style="cursor: pointer; color: #4099ef"
-                        >音频下载</a
-                        > -->
                     </div>
                     </template>
                 </el-table-column>
@@ -438,6 +495,13 @@ export default {
         //是否有UV
         hasUV(){
             return this.permissionBtn.checkPermissionBtn(this.permissionBtn.smartReportManageBtn.reportManage_reportList_uv)
+        },
+        //是否开启审批流,若开启,发布相关按钮,筛选项改变
+        isApprove(){
+            const type = this.$setting.dynamicOutLinks.ApprovalFlow ||
+                        this.$store.state.dynamicOutLinks.ApprovalFlow ||
+                        JSON.parse(localStorage.getItem('dynamicOutLinks')).ApprovalFlow||''
+            return ['2','3'].includes(type)
         }
     },
     data() {
@@ -509,6 +573,10 @@ export default {
             this.activeReportId=item.SmartReportId
             // this.isDSFB=item.PrePublishTime?true:false
             // this.showPublish=true
+            if(this.isApprove){
+                this.handleConfirmPublishReport()
+                return
+            }
             this.$confirm(
                 item.PrePublishTime?'该报告已设置定时发布,是否立即发布报告?':'是否立即发布报告?', 
                 '发布提示', 

+ 2 - 2
src/views/system_manage/outlinkList.vue

@@ -59,8 +59,8 @@ import {outlinkConfigInterence} from "@/api/modules/etaBaseConfigApi.js"
 
 <style lang="scss" scoped>
   .out-link-list{
-    min-height: calc(100vh - 110px);
-    height:calc(100vh - 110px);
+    min-height: calc(100vh - 120px);
+    height:calc(100vh - 120px);
     background-color: white;
     border: solid 1px #DCDFE6;
     box-sizing: border-box;

+ 2 - 2
src/views/system_manage/outlinkListConfig.vue

@@ -161,8 +161,8 @@ import mPage from '@/components/mPage.vue';
 
 <style lang="scss" scoped>
   .outlink-list-config{
-    min-height: calc(100vh - 110px);
-    height:calc(100vh - 110px);
+    min-height: calc(100vh - 120px);
+    height:calc(100vh - 120px);
     background-color: white;
     border: solid 1px #DCDFE6;
     box-sizing: border-box;

+ 20 - 0
src/vuex/mutations.js

@@ -26,6 +26,26 @@ const mutations = {
           filterObj[item.ConfKey] = item.ConfVal;
         }
     });
+    /*
+        [
+            {
+                "ConfKey": "ReportViewUrl", //研报预览分享链接
+                "ConfVal": "http://testetareport.hzinsights.com"
+            },
+            {
+                "ConfKey": "ChartViewUrl", //研报插入图表&表格外联
+                "ConfVal": "https://charttest.hzinsights.com"
+            },
+            {
+                "ConfKey": "ObjectStorageClient", //文件上传、存储 oss/minio
+                "ConfVal": "minio"
+            },
+            {
+                "ConfKey": "ApprovalFlow", //接口权限:是否走审批流 
+                "ConfVal": "" //0否 1研报2智能研报 3全选
+            }
+        ]
+     */
     localStorage.setItem('dynamicOutLinks',JSON.stringify(filterObj))
     state.dynamicOutLinks = filterObj; 
     setting.dynamicOutLinks = state.dynamicOutLinks;