Forráskód Böngészése

Merge branch 'master' of http://8.136.199.33:3000/eta_front/eta_front into ETA1.3.6

cxmo 11 hónapja
szülő
commit
fff6c7d3b0
33 módosított fájl, 294 hozzáadás és 235 törlés
  1. 0 12
      src/views/dataEntry_manage/addChart.vue
  2. 25 66
      src/views/dataEntry_manage/chartSetting.vue
  3. 1 1
      src/views/dataEntry_manage/databaseComponents/dataAssociateChart.vue
  4. 15 16
      src/views/dataEntry_manage/databaseList.vue
  5. 1 13
      src/views/dataEntry_manage/editChart.vue
  6. 1 24
      src/views/dataEntry_manage/mixins/addOreditMixin.js
  7. 4 1
      src/views/datasheet_manage/addSheet.vue
  8. 3 5
      src/views/datasheet_manage/common/option.js
  9. 5 9
      src/views/datasheet_manage/components/CustomTable.vue
  10. 4 7
      src/views/datasheet_manage/components/SheetExcel.vue
  11. 6 2
      src/views/datasheet_manage/customAnalysis/components/createTargetForm.vue
  12. 5 5
      src/views/datasheet_manage/sheetList.vue
  13. 2 2
      src/views/ppt_manage/newVersion/components/catalog/pptContent.vue
  14. 2 2
      src/views/ppt_manage/newVersion/components/catalog/pptContentEn.vue
  15. 2 2
      src/views/ppt_manage/newVersion/components/editor/ChooseCover.vue
  16. 1 1
      src/views/ppt_manage/newVersion/components/editor/InsertCharts.vue
  17. 1 1
      src/views/ppt_manage/newVersion/components/editor/InsertSemantics.vue
  18. 6 5
      src/views/ppt_manage/newVersion/pptEditor.vue
  19. 1 1
      src/views/ppt_manage/newVersion/pptEnCatalog.vue
  20. 3 2
      src/views/ppt_manage/newVersion/pptEnEditor.vue
  21. 2 2
      src/views/ppt_manage/newVersion/pptEnPresent.vue
  22. 2 2
      src/views/ppt_manage/newVersion/pptEnPublish.vue
  23. 2 2
      src/views/ppt_manage/newVersion/utils/config.js
  24. 1 2
      src/views/ppt_manage/newVersion/utils/untils.js
  25. 23 13
      src/views/predictEdb_manage/predictEdb.vue
  26. 1 5
      src/views/report_manage/addreportNew.vue
  27. 32 2
      src/views/report_manage/editChapterReport.vue
  28. 7 5
      src/views/sandbox_manage/index_new_version.vue
  29. 6 5
      src/views/sandbox_manage/sandFlowNew/index.vue
  30. 5 0
      src/views/smartReport/components/TextEdit.vue
  31. 12 4
      src/views/smartReport/reportDetail.vue
  32. 66 2
      src/views/smartReport/reportList.vue
  33. 47 14
      src/views/system_manage/outlinkList.vue

+ 0 - 12
src/views/dataEntry_manage/addChart.vue

@@ -150,18 +150,6 @@
 						@change="xAxisChange"
 						:clearable="false"
 					></el-date-picker>
-					<!-- <el-date-picker
-						style="width: 90%;"
-						v-model="xAxisRange"
-						type="daterange"
-						value-format="MM-dd"
-						format="MM-dd"
-						popper-class="x-range-picker-date"
-						start-placeholder="开始日期"
-						end-placeholder="结束日期"
-						@change="xAxisRangeChange"
-						:clearable="false"
-						></el-date-picker> -->
 					<el-checkbox label="跨年" v-model="isSpanYear" :disabled="isSpanYearDisable"
 					style="margin-top: 12px;" @change="changeIsSpanYear"></el-checkbox>
 					<div class="legend-set-text" @click="openLegendEditDia">

+ 25 - 66
src/views/dataEntry_manage/chartSetting.vue

@@ -918,9 +918,6 @@ export default {
         let [search_obj] = this.searchOptions.filter(
           (item) => item.ChartInfoId === newval
         );
-        // 查找图表的父级id
-        let arr = this.findParentNodeHandle(this.treeData,search_obj.ChartClassifyId);
-        this.defaultShowNodes = arr;
         this.select_node = search_obj.UniqueCode;
       
         this.selected_chartClassify = search_obj.ChartClassifyId; //图表所属分类
@@ -933,24 +930,6 @@ export default {
         this.select_date = [search_obj.StartDate, search_obj.EndDate];
         this.selected_chartType = search_obj.ChartType; //图表类型
         this.selected_chartid = newval;
-
-         //滚动到高亮节点位置
-        setTimeout(() => {
-          this.$refs.treeRef.setCurrentKey(this.select_node);
-          let node = document.getElementById(`node${this.select_node}`);
-          let parent = document.getElementsByClassName('tree-cont')[0];
-
-          //parent可视区间:[scrollTop,scrollTop+offsetHeight]
-          //node位置:node.offsetTop
-          const overTop = node.offsetTop+node.clientHeight+15<parent.scrollTop
-          const overBottom = node.offsetTop+node.clientHeight+15>parent.scrollTop+parent.offsetHeight
-          if(overTop){
-              parent.scrollTop = node.offsetTop-30
-          }
-          if(overBottom){
-            parent.scrollTop =  node.offsetTop - parent.offsetHeight/2
-          }
-        },400)
       }
     },
 
@@ -1477,18 +1456,10 @@ export default {
     // 树节点展开
     handleNodeExpand(data) {
       // 保存当前展开的节点
-      let flag = false;
-      this.defaultShowNodes.some((item) => {
-        if (item === data.UniqueCode) {
-          // 判断当前节点是否存在, 存在不做处理
-          flag = true;
-          return true;
-        }
-      });
-      if (!flag) {
-        // 不存在则存到数组里
-        this.defaultShowNodes.push(data.UniqueCode);
-      }
+      let flag = this.defaultShowNodes.some((item) => item === data.UniqueCode);
+			if (!flag) { // 不存在则存到数组里
+				this.defaultShowNodes.push(data.UniqueCode)
+			}
     },
     // 树节点关闭
     handleNodeCollapse(data) {
@@ -1498,7 +1469,6 @@ export default {
           this.defaultShowNodes.length = index;
         }
       });
-      // console.log(this.defaultShowNodes)
     },
 
     // 懒加载tree
@@ -1605,8 +1575,28 @@ export default {
       //将指标添加进标签列表中
       const {ChartNameEn,ChartName,ChartInfoId,UniqueCode,ChartClassifyId}=res.Data.ChartInfo
       this.addLabel({code:UniqueCode,id:ChartInfoId,classifyId:ChartClassifyId,EdbName:ChartName,EdbNameEn:ChartNameEn,chartData:res.Data.ChartInfo})
-      this.defaultShowNodes=this.findParentNodeHandle(this.treeData,ChartClassifyId)
+      this.defaultShowNodes=this.findParentNodeHandle(this.treeData,ChartClassifyId).reverse();
       this.changeTreeNode()
+
+
+      //滚动到高亮节点位置
+      this.$refs.treeRef.setCurrentKey(this.select_node);
+      setTimeout(() => {
+        let node = document.getElementById(`node${this.select_node}`);
+        let parent = document.getElementsByClassName('tree-cont')[0];
+
+        //parent可视区间:[scrollTop,scrollTop+offsetHeight]
+        //node位置:node.offsetTop
+        const overTop = node.offsetTop+node.clientHeight+15<parent.scrollTop
+        const overBottom = node.offsetTop+node.clientHeight+15>parent.scrollTop+parent.offsetHeight
+        console.log(overBottom)
+        if(overTop){
+            parent.scrollTop = node.offsetTop-30
+        }
+        if(overBottom){
+          parent.scrollTop =  node.offsetTop - parent.offsetHeight/2
+        }
+      },400)
     },
 
     /* 设置默认时间选中项 */
@@ -2068,8 +2058,6 @@ export default {
       // 查找选中的节点信息
       let select_obj = chartData?chartData:await this.findNode(deep_arr, id);
       // 查找图表的分类父级id
-      let arr = this.findParentNodeHandle(this.treeData,select_obj.ChartClassifyId); // 父的父的父-父的父-父
-      this.defaultShowNodes = arr;
       this.select_node = code;
       
       // 重置筛选状态
@@ -2080,23 +2068,6 @@ export default {
       this.select_date = [select_obj.StartDate, select_obj.EndDate]; //曲线日期选择
       this.selected_chartType = select_obj.ChartType;
       this.selected_chartid = id;
-
-      //滚动到高亮节点位置
-        setTimeout(() => {
-            this.$refs.treeRef.setCurrentKey(this.select_node);
-            let node = document.getElementById(`node${this.select_node}`);
-            let parent = document.getElementsByClassName('tree-cont')[0];
-            //parent可视区间:[scrollTop,scrollTop+offsetHeight]
-            //node位置:node.offsetTop
-            const overTop = node.offsetTop+node.clientHeight+15<parent.scrollTop
-            const overBottom = node.offsetTop+node.clientHeight+15>parent.scrollTop+parent.offsetHeight
-            if(overTop){
-                parent.scrollTop = node.offsetTop-30
-            }
-            if(overBottom){
-                parent.scrollTop =  node.offsetTop - parent.offsetHeight/2
-            }
-        },400)
     },
     
     /* 根据图表id 查找对象 */
@@ -2130,12 +2101,6 @@ export default {
         this.expandKey.length && this.expandKey[0] === row.EdbCode
           ? []
           : [row.EdbCode];
-      //曲线图点击行 自动置底
-      // if (this.selected_chartType === 1) {
-      //   this.$nextTick(() => {
-      //     $('.chart-min-cont')[0].scrollTop = 10000;
-      //   });
-      // }
     },
     
     /* 设置row-key */
@@ -2148,12 +2113,6 @@ export default {
         this.expandKey.length && this.expandKey[0] === row.EdbCode
           ? []
           : [row.EdbCode];
-      //曲线图点击行 自动置底
-      // if (this.selected_chartType === 1) {
-      //   this.$nextTick(() => {
-      //     $('.chart-min-cont')[0].scrollTop = 10000;
-      //   });
-      // }
       this.$refs.tableRef.setCurrentRow(row);
     },
     // 查找树节点所有父节点

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

@@ -170,7 +170,7 @@ export default {
                 }
             });
             
-            if(this.isOpenDetail) this.$refs.chartDetailRef.getChartDetail();
+            if(this.isOpenDetail) this.$refs.chartDetailRef.getChartInfo();
         },
 
         //显示详情

+ 15 - 16
src/views/dataEntry_manage/databaseList.vue

@@ -232,29 +232,28 @@
 							</el-tab-pane>
 						</el-tabs>
 						<div class="edb-tool-icon edb-tool" style="align-items: center;">
+							<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="EdbData.EdbType===2&&isEdbBtnShow('toSource')"
+								type="text" @click="isLookHistory=true;lookEdbId=selected_edbid">指标溯源</el-button>
 							<el-popover 
-								placement="left" 
-								trigger="click"
+								placement="bottom-end" 
+								trigger="hover"
 								popper-class="edb-tool-popover"
-								width="320" style="display: inline-block;">
+								width="300" 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')"
@@ -263,7 +262,7 @@
 										type="text" @click="removeNode(_,EdbData)" style="color:#C54322;">删除</el-button>
 								</div>
 								<div class="edb-btn" slot="reference">
-									<el-button type="text">操作</el-button>
+									<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>
@@ -2403,7 +2402,7 @@ export default {
 	.edb-tool-wrap{
 		display: flex;
 		flex-wrap: wrap;
-		gap:0 10px;
+		gap:10px;
 		.el-button + .el-button{
 			margin-left: 0;
 		}

+ 1 - 13
src/views/dataEntry_manage/editChart.vue

@@ -126,7 +126,7 @@
 					</el-select>
 				</div>
 
-				<div class="xaxis-range-cont" v-if="chartInfo.ChartType===2">
+				<div class="xaxis-range-cont" v-if="chartInfo.ChartType===2 && tableData && tableData.length>0">
 					<!-- 仅用于季节性图配置 -->
 					<div style="margin-bottom: 12px;" class="xaxis-range-tip">
 						横坐标显示范围 
@@ -159,18 +159,6 @@
 						@change="xAxisChange"
 						:clearable="false"
 					></el-date-picker>
-					<!-- <el-date-picker
-						style="width: 90%;"
-						v-model="xAxisRange"
-						type="daterange"
-						value-format="MM-dd"
-						popper-class="x-range-picker-date"
-						format="MM-dd"
-						start-placeholder="开始日期"
-						end-placeholder="结束日期"
-						@change="xAxisRangeChange"
-						:clearable="false"
-					></el-date-picker> -->
 					<el-checkbox label="跨年" v-model="isSpanYear" :disabled="isSpanYearDisable"
 					style="margin-top: 12px;" @change="changeIsSpanYear"></el-checkbox>
 					<div class="legend-set-text" @click="openLegendEditDia">

+ 1 - 24
src/views/dataEntry_manage/mixins/addOreditMixin.js

@@ -651,6 +651,7 @@ export default {
 				// this.xAxisRange = ['01-01','12-31']
 				this.SeasonExtraConfig.XStartDate = '01-01'
 				this.SeasonExtraConfig.XEndDate = '12-31'
+				this.SeasonExtraConfig.JumpYear=0
 				this.isSpanYear=false
 				this.isSpanYearDisable=false
 				this.SeasonExtraConfig.ChartLegend=[]
@@ -664,30 +665,6 @@ export default {
 			}
 		},
 		// 横轴显示范围改变
-		// xAxisRangeChange(date){
-		// 	console.log(date);
-		// 	if(date && date.length>0){
-		// 		// console.log(date[0],date[1]);
-		// 		let xStartDate = date[0]
-		// 		let xEndDate = date[1]
-		// 		if(new Date(`2023-${xStartDate}`) > new Date(`2023-${xEndDate}`) || 
-		// 		new Date(`2023-${xStartDate}`) == new Date(`2023-${xEndDate}`)){
-		// 			// 开始日期 >= 结束日期 跨年
-		// 			this.isSpanYear=true
-		// 			this.isSpanYearDisable=true
-		// 		}else{
-		// 			this.isSpanYearDisable=false
-		// 		}
-		// 		// this.xAxisRange = [xStartDate,xEndDate]
-		// 		this.SeasonExtraConfig.XStartDate = xStartDate
-		// 		this.SeasonExtraConfig.XEndDate = xEndDate
-		// 		this.SeasonExtraConfig.JumpYear = this.isSpanYear?1:0
-		// 		this.getPreviewSplineInfo()
-		// 	}else{
-		// 		this.isSpanYearDisable=false
-		// 	}
-		// },
-		// 横轴显示范围改变
 		xAxisChange(date){
 			if(this.SeasonExtraConfig.XStartDate && this.SeasonExtraConfig.XEndDate){
 				if(new Date(`2023-${this.SeasonExtraConfig.XStartDate}`) > new Date(`2023-${this.SeasonExtraConfig.XEndDate}`) || 

+ 4 - 1
src/views/datasheet_manage/addSheet.vue

@@ -98,7 +98,8 @@ export default {
   methods: {
 
     backHandle() {
-      window.close();
+      // window.close();
+      this.$router.back()
     },
 
     /* 获取分类 */
@@ -113,6 +114,8 @@ export default {
     /* 获取表格详情 */
     async getDetail() {
       if(!this.sheetId){
+        // 初始化数据
+        this.option={data:[{}]}
         this.sheetInit=true
         return
       }

+ 3 - 5
src/views/datasheet_manage/common/option.js

@@ -21,13 +21,11 @@ export function initSheet(container,options={},sheetInfo={},limit,callbackItems)
       postil:  false, //'批注'
 		},
     cellRightClickConfig: {
-      copy:!limit.disabled,
-      copyAs:!limit.disabled,
       chart: false, // 图表生成
       image: false, // 插入图片
       link: false, // 插入链接
     },
-    allowCopy:!limit.disabled,//没效果
+    // allowCopy:false,//没效果
     hook: {
       cellEditBefore:(range)=>{
         if(limit.disabled){
@@ -75,9 +73,9 @@ export function initSheet(container,options={},sheetInfo={},limit,callbackItems)
     },
     ...options,
   }
-
+  
   luckysheet.create(configOpt)
-
+  
 }
 
 /* 保存表格关联截图 手动选区截图再清空选区 */

+ 5 - 9
src/views/datasheet_manage/components/CustomTable.vue

@@ -505,18 +505,14 @@ export default {
 
       //如果有文本行 文本行的数据长度也要增加
       if(this.config.textRowData.length) {
-        let cell_len = this.config.textRowData[0].length - 1;
-        console.log(cell_len)
-        let row = new Array(this.config.data.length-cell_len).fill('').map(_ =>({
+        let cell_item = {
           ShowValue: '',
           Value: '',
           DataType: 3,
           DataTime: '',
-        }))
-        this.config.textRowData.forEach(_ => {
-          row.forEach(cell=> {
-            _.push(cell)
-          })
+        }
+        this.config.textRowData.forEach(row => {
+            row.push(_.cloneDeep(cell_item))
             
         })
       }
@@ -591,7 +587,7 @@ export default {
           DataType: 3,
           DataTime: '',
         }))
-        this.config.textRowData.push(row)
+        this.config.textRowData.push(_.cloneDeep(row))
         console.log(this.config.textRowData)
     },
 

+ 4 - 7
src/views/datasheet_manage/components/SheetExcel.vue

@@ -16,7 +16,7 @@ export default {
       default: ()=>{}
     },
     limit: {
-      type: Boolean,
+      type: Object,
       default: ()=>{
         return {disabled:false}
       }
@@ -36,6 +36,7 @@ export default {
     copyDisable(e){
       // 变向的禁止复制
       // console.log(e.target.value && e.target.value.indexOf('lucksheet'));
+      if(!this.limit.disabled) return
       if(e.target.value && e.target.value.indexOf('lucksheet')){
         luckysheet.enterEditMode();
         // luckysheet.exitEditMode();
@@ -51,14 +52,10 @@ export default {
   },
   mounted() {
     this.init();
-    if(this.limit.disabled){
-      document.addEventListener('copy',this.copyDisable)
-    }
+    document.addEventListener('copy',this.copyDisable)
   },
   beforeDestroy(){
-    if(this.limit.disabled){
-      document.removeEventListener('copy',this.copyDisable)
-    }
+    document.removeEventListener('copy',this.copyDisable)
   }
 }
 </script>

+ 6 - 2
src/views/datasheet_manage/customAnalysis/components/createTargetForm.vue

@@ -171,7 +171,10 @@ export default {
           unit: data.Unit,
         }
 
-        this.setRangeShow([data.DateSequenceStr,data.DataSequenceStr]);
+        let sheetName = data.DateSequenceStr.substr(0,data.DateSequenceStr.indexOf('!'))
+        let order = luckysheet.getAllSheets().find(_ => _.name===sheetName) ? luckysheet.getAllSheets().find(_ => _.name===sheetName).order : 0;
+
+        this.setRangeShow([data.DateSequenceStr,data.DataSequenceStr],order);
       }else {
         this.formData = {
           edbInfoId: 0,
@@ -190,7 +193,7 @@ export default {
     },
 
     /* 解析公式显示选区 */
-    setRangeShow(range) {
+    setRangeShow(range,order=null) {
       
       //初始化多选区
       let rangeArr = [];
@@ -201,6 +204,7 @@ export default {
       }else {
         rangeArr = [this.splitFormula(range)]
       }
+      order!==null && luckysheet.setSheetActive(order)
       luckysheet.setRangeShow(rangeArr)
     },
 

+ 5 - 5
src/views/datasheet_manage/sheetList.vue

@@ -492,12 +492,12 @@ export default {
         3: "/addMixedSheet",
       };
 
-      if(type === 1) {
-        const { href } = this.$router.resolve({ path: path[type] });
-        window.open(href, "_blank");
-      }else {
+      // if(type === 1) {
+      //   const { href } = this.$router.resolve({ path: path[type] });
+      //   window.open(href, "_blank");
+      // }else {
         this.$router.push({ path: path[type] })
-      }
+      // }
     },
 
     /* 获取表格分类 */

+ 2 - 2
src/views/ppt_manage/newVersion/components/catalog/pptContent.vue

@@ -319,8 +319,8 @@ export default {
     .ppt-item{
       position:relative;
       width:100%;
-      background: url('~@/assets/img/pptnextimg.png') no-repeat center;
-      background-size: 100%;
+      background: url('~@/assets/img/pptnextimg.png') no-repeat top;
+      background-size: 100% 100%;
       margin-bottom: 20px;
       border: 4px solid transparent;
       .ppt-info{

+ 2 - 2
src/views/ppt_manage/newVersion/components/catalog/pptContentEn.vue

@@ -315,9 +315,9 @@ export default {
     .ppt-item{
       position:relative;
       width:100%;
-      background: url('~@/assets/img/ppt_en_bg.png') no-repeat center;
+      background: url('~@/assets/img/ppt_en_bg.png') no-repeat top;
       /* background-size: cover; */
-      background-size: 100% 104.5%;
+      background-size: 100% 100%;
       margin-bottom: 20px;
       border: 4px solid transparent;
       // .ppt-info{

+ 2 - 2
src/views/ppt_manage/newVersion/components/editor/ChooseCover.vue

@@ -5,7 +5,7 @@
                 <span>选择封面</span>
                 <img src="~@/assets/img/ppt_m/close.png" alt="" class="close_ico" @click="closeDialog">
             </header>
-            <div class="dialog-bg" :style="'backgroundImage:url('+bgList[bgListIndex]+');backgroundPosition:center;backgroundRepeat:no-repeat;backgroundSize:cover;'">
+            <div class="dialog-bg" :style="'backgroundImage:url('+bgList[bgListIndex]+');backgroundPosition:center;backgroundRepeat:no-repeat;'">
                 <div :style="`width:62%; font-size:16px; text-align:center; line-height:1.6; color:${$parent.pptCoverTextColor}; position:absolute; right:20px; top:50%;`">
                     <p :style="`height:5px;margin-bottom:21px;`"></p>
                     <el-input
@@ -214,7 +214,7 @@ export default {
             /* height: 645px; */
             position: relative;
             padding-bottom: 70%;
-            background-size: 100% 100%;
+            background-size: 100% 100% !important;
             .select_ico {
                 width: 48px;
                 height: 48px;

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

@@ -40,7 +40,7 @@
           En
         </div>
         <p>{{ item.ChartName }}</p>
-        <img :src="item.ChartImage" alt="" />
+        <img :src="item.ChartImage" alt="" style="-webkit-user-drag:none;"/>
       </div>
     </div>
     <div v-if="list.length == 0" class="empty-box">无数据</div>

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

@@ -12,7 +12,7 @@
 		<div class="list" v-infinite-scroll="load" v-if="list.length>0">
             <div class="item" v-for="item in list" :key="item.SaCompareId" @click="handleClickItem(item)">
                 <p>{{ item.Title }}</p>
-                <img :src="item.PicUrl" alt="">
+                <img :src="item.PicUrl" alt="" style="-webkit-user-drag:none;">
             </div>
 		</div>
         <div v-if="list.length==0" class="empty-box">

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

@@ -137,7 +137,7 @@
                     <template v-if="chartList.length">
                     <div v-for="(item, index) in chartList" :key="index" @click="chooseChart(item,'chart')" class="chart-item" :style="item.Disabled && 'cursor: not-allowed;'">
                         <p class="chart_tit">{{ item.ChartName }}</p>
-                        <img :src="item.ChartImage" ref="insert_img" />
+                        <img :src="item.ChartImage" ref="insert_img" style="-webkit-user-drag:none;"/>
                     </div>
                     </template>
                     <tableNoData text="暂无数据" size="mini" v-else/>
@@ -151,7 +151,7 @@
                   <template v-if="sandTableList.length">
                     <div v-for="(item,index) in sandTableList" :key="index" class="sandTable-item" >
                       <p class="chart_tit">{{item.Name}}</p>
-                      <img :src="item.PicUrl" style="width:100%"  @click="chooseChart(item,'sandImage')"/>
+                      <img :src="item.PicUrl" style="width:100%;-webkit-user-drag:none;"  @click="chooseChart(item,'sandImage')"/>
                       <p class="source-identification">来源:弘则研究</p>
                     </div>
                     <div v-loading = "sandTableLoading" class="loaded-text">{{loadedText}}</div>
@@ -167,7 +167,7 @@
                   <template v-if="sheetSearchList.length">
                     <div v-for="(item,index) in sheetSearchList" :key="index" class="sandTable-item" >
                       <p class="chart_tit">{{item.ExcelName}}</p>
-                      <img :src="item.ExcelImage" style="width:100%;object-fit: contain;height: 250px"  @click="chooseChart(item,'sheet')"/>
+                      <img :src="item.ExcelImage" style="width:100%;object-fit: contain;height: 250px;-webkit-user-drag:none;"  @click="chooseChart(item,'sheet')"/>
                     </div>
                   </template>
                   <tableNoData text="暂无数据" size="mini" v-else/>
@@ -1315,6 +1315,7 @@ $titleColor:#333333;
                 display: flex;
                 justify-content: center;
                 align-items: center;
+                background-size: 100% 100% !important;
                 /* background: no-repeat center/cover url(~@/assets/img/ppt_m/bg3.jpg); */
             }
         }
@@ -1383,8 +1384,8 @@ $titleColor:#333333;
                     width:calc(100% - 64px);
                     /* height: 0;
                     padding-bottom: calc(69.408% - 64px); */
-                    background: url('~@/assets/img/pptnextimg.png') no-repeat center;
-                    background-size: cover;
+                    background: url('~@/assets/img/pptnextimg.png') no-repeat top;
+                    background-size: 100% 100%;
                     /* margin-bottom: 30px; */
                     position: relative;
                     border: 4px solid transparent;

+ 1 - 1
src/views/ppt_manage/newVersion/pptEnCatalog.vue

@@ -557,7 +557,7 @@ export default {
             authArr.push(k)
           }
       }
-      this.pptToolList = toolList.filter((i)=>{
+      this.pptToolList = this.pptToolList.filter((i)=>{
           return authArr.includes(i.key)
         })
 

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

@@ -1280,6 +1280,7 @@ $titleColor:#333333;
                 display: flex;
                 justify-content: center;
                 align-items: center;
+                background-size: 100% 100% !important;
                 /* background: no-repeat center/cover url(~@/assets/img/ppt_m/bg3.jpg); */
             }
         }
@@ -1348,9 +1349,9 @@ $titleColor:#333333;
                     width:calc(100% - 64px);
                     /* height: 0;
                     padding-bottom: calc(69.408% - 64px); */
-                    background: url('~@/assets/img/ppt_en_bg.png') no-repeat center;
+                    background: url('~@/assets/img/ppt_en_bg.png') no-repeat top;
                     /* background-size: 898px 642px; */
-                    background-size:101% 104.5%;
+                    background-size:100% 100%;
                     /* margin-bottom: 30px; */
                     position: relative;
                     border: 4px solid transparent;

+ 2 - 2
src/views/ppt_manage/newVersion/pptEnPresent.vue

@@ -862,8 +862,8 @@ $titleColor:#333333;
     .ppt-item{
       width: 100%;
       height: 100%;
-      background: url('~@/assets/img/ppt_en_bg.png') no-repeat center;
-      background-size: 100% 104.5%;
+      background: url('~@/assets/img/ppt_en_bg.png') no-repeat top;
+      background-size: 100% 100%;
       position:relative;
       border: 4px solid transparent;
       overflow: hidden;

+ 2 - 2
src/views/ppt_manage/newVersion/pptEnPublish.vue

@@ -692,8 +692,8 @@ $titleColor:#333333;
       /* height: 628.594px; */
       background-color: pink;
       margin-bottom: 20px;
-      background: url('~@/assets/img/ppt_en_bg.png') no-repeat center;
-      background-size: 100% 104.5%;
+      background: url('~@/assets/img/ppt_en_bg.png') no-repeat top;
+      background-size: 100% 100%;
       position:relative;
       border: 4px solid transparent;
       transform-origin: 0 0;

+ 2 - 2
src/views/ppt_manage/newVersion/utils/config.js

@@ -405,9 +405,9 @@ export const pptSlideMasterEn = {
 		{
 			image: {
         x: 0,
-        y: -0.1,
+        y: 0,
         w: 10,
-        h: 7.1,
+        h: 7,
         path: "/static/ppt_en_bg.png", 
       },
 		},

+ 1 - 2
src/views/ppt_manage/newVersion/utils/untils.js

@@ -50,9 +50,8 @@ export const pptInit = (pptx,LayoutType,lang='ch') => {
     let layout = pptLayout,sliderMaster = lang==='ch'?pptSlideMaster:pptSlideMasterEn
     if(LayoutType!==1){
         layout = { name: "myppt", width: 10, height: LayoutType===2?5.625:7.5 }
-        const y = lang==='ch'?0:-0.1
         const h = LayoutType===2?5.625:7.5
-        sliderMaster.objects[1] = {image: {x:0,y:y,w:10,h:lang==='ch'?h:h+0.1,path: lang==='ch'?"/static/pptnextimg.png":"/static/ppt_en_bg.png"}}
+        sliderMaster.objects[1] = {image: {x:0,y:0,w:10,h,path: lang==='ch'?"/static/pptnextimg.png":"/static/ppt_en_bg.png"}}
         sliderMaster.slideNumber = {x:'95%',y:LayoutType===2?'92%':'95%',fontSize:12}
     }
   pptx.defineLayout(layout)

+ 23 - 13
src/views/predictEdb_manage/predictEdb.vue

@@ -186,24 +186,24 @@
 							</el-tab-pane>
 						</el-tabs>
 						<div class="edb-tool-icon edb-tool" style="align-items: center;">
+							<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_edbSource"
+								type="text" @click="isLookHistory=true;lookEdbId=select_id">指标溯源</el-button>
 							<el-popover 
-								placement="left" 
-								trigger="click"
+								placement="bottom-end" 
+								trigger="hover"
 								popper-class="edb-tool-popover"
-								width="320" style="display: inline-block;">
+								width="300" 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"
@@ -212,7 +212,7 @@
 										type="text" @click="copyData">复制数据</el-button>
 								</div>
 								<div class="edb-btn" slot="reference">
-									<el-button type="text">操作</el-button>
+									<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>
@@ -1707,7 +1707,7 @@ $mini-font: 12px; $normal-font: 14px;
 					}
 					.sheet-item {
 						width:23%;
-						min-width: 255px;
+						min-width: 210px;
 						border-radius: 4px;
 						box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
 						border: 1px solid #EBEEF5;
@@ -1858,4 +1858,14 @@ $mini-font: 12px; $normal-font: 14px;
 		}
 	}	
 }
+.edb-tool-popover{
+	.edb-tool-wrap{
+		display: flex;
+		flex-wrap: wrap;
+		gap:10px;
+		.el-button + .el-button{
+			margin-left: 0;
+		}
+	}
+}
 </style>

+ 1 - 5
src/views/report_manage/addreportNew.vue

@@ -312,7 +312,7 @@
 			</div>
 		</div>
 		<span
-			class="slide-icon"
+			class="slide-icon slide-btn-icon"
 			:class="{'slide-left':!isRightFormShow,'slide-right':isRightFormShow}"
 			@click="isRightFormShow = !isRightFormShow"
 		>
@@ -994,10 +994,6 @@ export default {
 		}
 	}
 	.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%;

+ 32 - 2
src/views/report_manage/editChapterReport.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; padding: 0px 0 15px 0; box-sizing: border-box"
       >
@@ -289,6 +290,13 @@
 				</div>
       </div>
     </div>
+    <span
+            class="slide-icon slide-btn-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>
   </div>
 </template>
 
@@ -334,6 +342,7 @@ export default {
   data() {
     let that=this
     return {
+      isRightFormShow:true,
       weekPanelTabs:[
         "基础信息",
         "图表插入",
@@ -893,7 +902,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;
@@ -948,6 +963,21 @@ export default {
       font-size: 14px;
     }
   }
+  .slide-icon{
+    position:fixed;
+    top: 50%;
+    transform: translateY(-50%);
+    z-index: 99;
+    &:hover {
+        background-color: #e0e0e0;
+    }
+    &.slide-left {
+        right: 30px;
+    }
+    &.slide-right {
+        right: 515px;
+    }
+  }
 }
 </style>
 <style lang="scss">

+ 7 - 5
src/views/sandbox_manage/index_new_version.vue

@@ -901,6 +901,7 @@ import { myGraph } from './common/gragh';
             resolve(resultNode)
             return 
           }
+          this.zTreeObj.removeChildNodes(parentNode)
           sandInterface.getSandboxClassify({SandboxClassifyId:parentNode.SandboxClassifyId,IsShowMe:this.searchParams.IsShowMe}).then(res=>{
             if (res.Ret === 200) {
               let nodesData=res.Data.AllNodes || []
@@ -1075,13 +1076,14 @@ import { myGraph } from './common/gragh';
             },{
               preserveDimensions:true,//让svg为实际图片大小
               beforeSerialize:(svg)=>{
+                const zoom = this.graph.zoom();
                 const {x,y,width,height} = this.graph.getContentBBox(cells)
                 let {tx,ty} = this.graph.translate() // 画布偏移量
                 //给导出的svg增加一点宽高
-                svg.setAttribute('width',width+50)
-                svg.setAttribute('height',height+50) 
+                svg.setAttribute('width',width+60*zoom)
+                svg.setAttribute('height',height+60*zoom) 
                 //设置viewBox使图像居中
-                svg.setAttribute('viewBox',`${x-25} ${y-25} ${width+50} ${height+50}`)
+                svg.setAttribute('viewBox',`${x-30*zoom} ${y-30*zoom} ${width+60*zoom} ${height+60*zoom}`)
                 // 在图表右下方 加上"来源:弘则研究"字样
                 let gNode = svg.getElementsByClassName('x6-graph-svg-viewport')[0]
                 // 去掉不该截图的添加图标
@@ -1098,8 +1100,8 @@ import { myGraph } from './common/gragh';
                   i--
                 }
                 let textNode = document.createElement('text')
-                textNode.setAttribute('x',x-tx+width-90)
-                textNode.setAttribute('y',y-ty+height+22)
+                textNode.setAttribute('x',(x-tx+width)/zoom-85)
+                textNode.setAttribute('y',(y-ty+height)/zoom+27)
                 textNode.setAttribute('font-size','16px')
                 textNode.setAttribute('font-style','italic')
                 textNode.innerText = '来源:弘则研究'

+ 6 - 5
src/views/sandbox_manage/sandFlowNew/index.vue

@@ -1361,13 +1361,14 @@ import { svgToBase64 } from '@/utils/svgToblob'
         },{
           preserveDimensions:true,//让svg为实际图片大小
           beforeSerialize:(svg)=>{
+            const zoom = this.graph.zoom();
             const {x,y,width,height} = this.graph.getContentBBox(cells)
             let {tx,ty} = this.graph.translate() // 画布偏移量
             //给导出的svg增加一点宽高
-            svg.setAttribute('width',width+50)
-            svg.setAttribute('height',height+50) 
+            svg.setAttribute('width',width+60*zoom)
+            svg.setAttribute('height',height+60*zoom) 
             //设置viewBox使图像居中
-            svg.setAttribute('viewBox',`${x-25} ${y-25} ${width+50} ${height+50}`)
+            svg.setAttribute('viewBox',`${x-30*zoom} ${y-30*zoom} ${width+60*zoom} ${height+60*zoom}`)
             // 在图表右下方 加上"来源:弘则研究"字样
             let gNode = svg.getElementsByClassName('x6-graph-svg-viewport')[0]
             // 去掉不该截图的添加图标
@@ -1384,8 +1385,8 @@ import { svgToBase64 } from '@/utils/svgToblob'
               i--
             }
             let textNode = document.createElement('text')
-            textNode.setAttribute('x',x-tx+width-90)
-            textNode.setAttribute('y',y-ty+height+22)
+            textNode.setAttribute('x',(x-tx+width)/zoom-85)
+            textNode.setAttribute('y',(y-ty+height)/zoom+27)
             textNode.setAttribute('font-size','16px')
             textNode.setAttribute('font-style','italic')
             textNode.innerText = '来源:弘则研究'

+ 5 - 0
src/views/smartReport/components/TextEdit.vue

@@ -25,6 +25,9 @@ export default {
             editor: null,
             lastEditRange: null,
             froalaConfig:{
+                imageUploadURL: process.env.VUE_APP_API_ROOT + "/report/uploadImg", //上传url
+                videoUploadURL: process.env.VUE_APP_API_ROOT + "/report/uploadImg", //上传url
+                fileUploadURL: process.env.VUE_APP_API_ROOT + "/report/uploadImg", //上传url 更多上传介绍 请访问https://www.froala.com/wysiwyg-editor/docs/options
                 toolbarButtons: [
                     "textColor",
                     "bold",
@@ -100,6 +103,8 @@ export default {
     methods: {
         sendHtml(){
             const str=this.html.replace(/<p data-f-id=\"pbf\".*?<\/p>/g, "")
+            //如果富文本中有未上传完成的图片,去除这个dom
+			$('.fr-element').find('img.fr-uploading').length&&$('.fr-element').find('img.fr-uploading').remove()
             this.$emit('textChange', str)
         }
     },

+ 12 - 4
src/views/smartReport/reportDetail.vue

@@ -38,10 +38,11 @@
                     class="qrcode"
                 ></vue-qr>
             </div>
-            <div class="item" v-if="reportInfo.State == 2" @click="handleGetReportImg" v-permission="permissionBtn.smartReportManageBtn.reportManage_reportView_exportImg">
+            <!-- 去除详情页导出图片 放到报告列表页去 -->
+            <!-- <div class="item" v-if="reportInfo.State == 2" @click="handleGetReportImg" v-permission="permissionBtn.smartReportManageBtn.reportManage_reportView_exportImg">
                 <img src="~@/assets/img/smartReport/icon16.png" alt="" style="width:30px;height:30px;marginRight:10px;">
                 <span>导&nbsp;&nbsp;图</span>
-            </div>
+            </div> -->
         </div>
 
         <!-- 报告图片 -->
@@ -63,8 +64,15 @@ export default {
 				str=`${baseUrl}/reportshare_smart_report?code=${this.$route.query.code}`
 			}
 			return str
-		}
-	},
+		},
+        //是否开启审批流,若开启,导图按钮在非已审批的状态不显示
+        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,

+ 66 - 2
src/views/smartReport/reportList.vue

@@ -304,7 +304,14 @@
                                 <span
                                     v-if="permissionBtn.checkPermissionBtn(permissionBtn.smartReportManageBtn.reportManage_cancelPublish)"
                                     @click="handleReportPublishCancel(scope.row)"
-                                    style="color: red; cursor: pointer">取消发布</span>
+                                    style="color: red; cursor: pointer"
+                                >取消发布</span>
+                                <span
+                                    v-if="scope.row.DetailImgUrl"
+                                    v-permission="permissionBtn.smartReportManageBtn.reportManage_reportView_exportImg"
+                                    @click="handleDownReportImg(scope.row.DetailImgUrl,scope.row.Title)"
+                                    style="cursor: pointer; color: #4099ef;display:inline-block"
+                                >图片下载</span>
                                 <!-- <span
                             v-if="scope.row.MsgIsSend == 0 && permissionBtn.checkPermissionBtn(permissionBtn.smartReportManageBtn.reportManage_sendMsg)"
                             style="color: #4099ef; cursor: pointer"
@@ -355,6 +362,12 @@
                                     @click="handleReportPublishCancel(scope.row)"
                                     style="color: red; cursor: pointer">撤销
                                 </span>
+                                <span
+                                    v-if="scope.row.DetailImgUrl&&scope.row.State===4"
+                                    v-permission="permissionBtn.smartReportManageBtn.reportManage_reportView_exportImg"
+                                    @click="handleDownReportImg(scope.row.DetailImgUrl,scope.row.Title)"
+                                    style="cursor: pointer; color: #4099ef;display:inline-block"
+                                >图片下载</span>
                             </template>
                              <!--已驳回则只显示撤销按钮-->
                             <template v-if="scope.row.State===3">
@@ -497,6 +510,11 @@
                 </div>
             </div>
         </el-dialog>
+
+        <!-- 报告图片 -->
+        <div class="report-img-box" v-if="showReportImg&&reportImgUrl" @click="showReportImg=false">
+            <img :src="reportImgUrl" alt="" @click.stop="">
+        </div>
     </div>
 </template>
 
@@ -558,10 +576,42 @@ export default {
 
             showPublish:false,
             activeReportId:0,
-            isDSFB:false
+            isDSFB:false,
+
+            reportImgUrl:'',
+            showReportImg:false
         }
     },
     methods:{
+        // 下载报告图片
+        handleDownReportImg(imgUrl,title){
+            let img=new Image()
+            img.setAttribute('crossOrigin', 'anonymous');
+            img.src=imgUrl
+            img.onload=()=>{
+                let canvas = document.createElement("canvas");
+                canvas.width = img.width;
+                canvas.height = img.height;
+                let context = canvas.getContext('2d');
+                context.drawImage(img, 0, 0, img.width, img.height);
+                let dataURL = canvas.toDataURL("image/png", 1);
+                const a=document.createElement('a')
+                a.setAttribute("download",title)
+                a.style.display = "none"
+                a.href=dataURL
+                document.body.appendChild(a);
+                a.click()
+            }
+            img.onerror=(e)=>{
+                console.log(e);
+                this.$message.warning("自动下载图片失败,请手动保存")
+                if(imgUrl){
+                    this.reportImgUrl=imgUrl
+                    this.showReportImg=true
+                }
+            }
+        },
+
         // 删除某个报告
         handleDelReport(item){
             //删除
@@ -908,5 +958,19 @@ export default {
             margin-bottom: 0;
         }
     }
+    .report-img-box{
+        position: fixed;
+        left: 0;
+        top: 0;
+        bottom: 0;
+        right: 0;
+        overflow-y: auto;
+        background: rgba($color: #000000, $alpha: 0.6);
+        text-align: center;
+        img{
+            max-width: 800px;
+        }
+    }
 }
+
 </style>

+ 47 - 14
src/views/system_manage/outlinkList.vue

@@ -1,7 +1,8 @@
 <template>
   <div id="out-link-list" class="out-link-list">
     <div v-if="outlinkData && outlinkData.length>0" class="outlink-box">
-      <div class="outlink-item" v-for="item in outlinkData" :key="item.Id" @click="gotoOutlink(item)">
+      <div class="outlink-item" :class="'outlink'+(index%4)" v-for="(item,index) in outlinkData" :key="item.Id" @click="gotoOutlink(item)"
+      >
         <img src="~@/assets/img/eta_base_config/outlink.png">
         <div class="outlink-item-text-zone">
           <span>{{ item.Title }}</span>
@@ -23,7 +24,8 @@ import {outlinkConfigInterence} from "@/api/modules/etaBaseConfigApi.js"
     name:"outlinkList",
     data() {
       return {
-        outlinkData:[]
+        outlinkData:[],
+        colors:['#E3EAFD','#FBEBD5','#DEF4D8','#DEF2FC']
       }
     },
     created(){
@@ -79,10 +81,10 @@ import {outlinkConfigInterence} from "@/api/modules/etaBaseConfigApi.js"
         border-radius: 8px;
         box-sizing: border-box;
         padding: 30px 40px 30px 13px;
-        border: solid 2px #0052D9;
+        // border: solid 2px #0052D9;
         cursor: pointer;
         margin: 0 30px 30px 0;
-        background-color: #F2F3FF;
+        // background-color: #F2F3FF;
         img{
           height: 55px;
           margin-top: -6px;
@@ -96,9 +98,10 @@ import {outlinkConfigInterence} from "@/api/modules/etaBaseConfigApi.js"
             font-weight: bold;
             color: #333;
             white-space: nowrap;
+            overflow: hidden;
+            text-overflow: ellipsis;
             &:last-child{
               font-size: 12px;
-              color: #999999;
               font-weight: 400;
               display: block;
               margin-top: 4px;
@@ -106,15 +109,45 @@ import {outlinkConfigInterence} from "@/api/modules/etaBaseConfigApi.js"
           }
         }
         &:hover{
-          background-color: #0052D9;
-          .outlink-item-text-zone{
-            span{
-              color: #ffffff;
-              &:last-child{
-                color: rgba($color: #ffffff, $alpha: 0.65);
-              }
-            }
-          }
+          // box-shadow: 6px 7px 11px 0px rgba($color: #646464, $alpha: 0.1);
+          // box-shadow: 6px 7px 11px 0px #64646417;
+          // background-color: #0052D9;
+          // .outlink-item-text-zone{
+          //   span{
+          //     color: #ffffff;
+          //     &:last-child{
+          //       color: rgba($color: #ffffff, $alpha: 0.65);
+          //     }
+          //   }
+          // }
+        }
+      }
+      .outlink0{
+        background-color: #E3EAFD;
+        border: 2px solid #E3EAFD;
+        &:hover{
+          border: 2px solid #436FF6;
+        }
+      }
+      .outlink1{
+        background-color: #FBEBD5;
+        border: 2px solid #FBEBD5;
+        &:hover{
+          border: 2px solid #EF8E34;
+        }
+      }
+      .outlink2{
+        background-color: #DEF4D8;
+        border: 2px solid #DEF4D8;
+        &:hover{
+          border: 2px solid #65C444;
+        }
+      }
+      .outlink3{
+        background-color: #DEF2FC;
+        border: 2px solid #DEF2FC;
+        &:hover{
+          border: 2px solid #479DD2;
         }
       }
     }