Karsa 1 year ago
parent
commit
bfa1dd68ca

+ 0 - 18
src/routes/modules/pptRoutes.js

@@ -52,24 +52,6 @@ export default [
 					keepAlive: false
 				}
 			},
-			{
-				path: 'addpptNew',
-				component: () => import('@/views/ppt_manage/addpptNew.vue'),
-				name: '新增ppt',
-				hidden: true,
-				meta: {
-					keepAlive: false
-				}
-			},
-			{
-				path: 'editpptNew',
-				component: () => import('@/views/ppt_manage/editpptNew.vue'),
-				name: '编辑ppt',
-				hidden: true,
-				meta: {
-					keepAlive: false
-				}
-			},
 			//智能ppt
 			{
 				path: 'pptlist_',

+ 11 - 0
src/utils/svgToblob.js

@@ -39,4 +39,15 @@ export const svgToBase64 = (svg) => {
     unescape(encodeURI(svg))
   )}`;
   return base64img;
+}
+
+/* 不受粘贴板对象影响的粘贴 */
+export function copyFit(value) {
+  const input = document.createElement('input')
+  input.setAttribute('readonly','readonly')
+  input.value = value
+  document.body.appendChild(input)
+  input.select();
+  document.execCommand('copy');
+  document.body.removeChild(input);
 }

+ 0 - 664
src/views/ppt_manage/addpptNew.vue

@@ -1,664 +0,0 @@
-<template>
-	<div class="addppt-container">
-		<div class="addppt-left-cont">
-			<div class="first-page" @click="openDialog">
-				<img :src="firstPage.bg" alt="" class="first-bg" v-if="firstPage.bg">
-				<div class="shade_first" v-if="!firstPage.title">
-					<img src="~@/assets/img/ppt_m/add_first.png" alt="">
-					<span>选择封面页</span>
-				</div>
-				<div v-else style="width:70%;text-align:center;font-size:12px;line-height:1.6; color:#fff; position:absolute; right:10px; top:50%;">
-					<!-- <p style="height:5px; border-top:1px solid #fff;marginBottom:6px;"></p> -->
-					<p class="text_twoLine">{{firstPage.title}}</p>
-					<p>{{firstPage.date}}</p>
-				</div>
-			</div>
-			<template v-if="pptList.length">
-				<div style="color:#409EFF;font-size:15px;padding-left:10px;margin-bottom:4px;">已添加{{pptList.length}}页</div>
-				<transition-group name="flip-list">
-					<div 
-					v-for="(item,index) in pptList" 
-					:key="item" 
-					draggable="true" 
-					:class="['drag-item',{'choose':item.timestamp===default_ppt}]"
-					@click="choosePPtItem(item,index,0)"
-					@dragstart="dragstart(item)" 
-					@dragenter="dragenter(item)" 
-					@dragend="dragend(item)">
-						<img src="~@/assets/img/ppt_m/pppage_ico.png" class="drag-left">
-						<div class="drag-right text_twoLine">
-							{{item.title}}
-						</div>
-						<el-popconfirm
-						@onConfirm="delPage(index)"
-						confirmButtonText='删除'
-						cancelButtonText='取消'
-						confirmButtonType="text"
-						icon="el-icon-info"
-						iconColor="red"
-						title="确定删除该页ppt吗"
-						>
-							<img src="~@/assets/img/ppt_m/close.png" class="close_ico" slot="reference">
-						</el-popconfirm>
-						<img src="~@/assets/img/ppt_m/move_ico.png" alt="" class="move_ico">
-						<span style="position:absolute;right:10px;bottom:5px;color:#888;font-size:12px;">第{{index+1}}页</span>
-					</div>
-				</transition-group>
-			</template>
-			<div style="color:#A3AFBB;font-size:14px;text-align:center;margin-top:124px;" v-else>
-				<img src="~@/assets/img/ppt_m/noppt.png" alt="" style="width:60px;height:33px;display:block;margin:0 auto 10px;">	
-				<span>添加正文后,会在这里生成</span>
-			</div>
-		</div>
-		<!-- ppt正文 -->
-		<div class="addppt-mid-cont" ref="pptmid">
-			<template v-if="pptList.length">
-				<transition-group name="flip-list">
-					<div class="ppt-list" v-for="(item,index) in pptList" :key="item">
-						<div style="display:flex;align-items:center;justify-content:space-between;">
-							<img src="~@/assets/img/ppt_m/add.png" alt="" class="add_ico" @click="addPage(index)">
-							<el-popconfirm
-							@onConfirm="delPage(index)"
-							confirmButtonText='删除'
-							cancelButtonText='取消'
-							confirmButtonType="text"
-							icon="el-icon-info"
-							iconColor="red"
-							title="确定删除该页ppt吗"
-							>
-								<img src="~@/assets/img/ppt_m/close.png" alt="" style="width:18px;height:18px;margin-bottom:20px;" slot="reference">
-							</el-popconfirm>
-						</div>
-						<div :class="['ppt-item',{'choose':item.timestamp===default_ppt}]" @click="choosePPtItem(item,index,1)" :id="'pptItem'+index">
-							<input type="text" placeholder="请输入页面标题" class="item_tit" v-model="item.title"> 
-							<div class="container" :id="'container'+item.resource_id" v-if="item.resource_id"></div>
-						</div>
-						<span style="position:absolute; bottom:3%; right:20px; color:#666;">第{{index+1}}页</span>
-					</div>
-				</transition-group>
-			</template>
-			<div v-else class="ppt-list" style="display:flex;align-items:center;" @click="addPage('last')">
-				<img src="~@/assets/img/ppt_m/add.png" alt="" class="add_ico" style="display:inline-block;margin-bottom:0">
-				<span style="display:inline;color:#999;font-size:20px;">点击添加正文</span>
-			</div>
-			<div class="ppt-list" v-if="pptList.length">
-				<img src="~@/assets/img/ppt_m/add.png" alt="" class="add_ico" @click="addPage('last')">
-				<!-- <img src="~@/assets/img/pptlastimg.png" alt="" class="last-page"> -->
-			</div>
-		</div>
-		<!-- 右侧图表 -->
-		<div class="addppt-right-cont">
-			<!-- <span style="marginRight:43%"></span> -->
-			<el-button type="primary" @click="previewHandle" style="margin-right:15px;">去发布</el-button>
-			<el-button type="primary" @click="savePPt" plain>保存</el-button>
-			<el-input placeholder="关键字查找" v-model="key_word" size="medium" prefix-icon="el-icon-search" @input="getreportlist(key_word)" style="margin:20px 0;max-width:420px;"></el-input>
-			<div id="chartList" style="height:calc(100vh - 250px); overflow-x:hidden; overflow-y:auto; border:1px solid #B2B9C3; position:relative;padding:30px 20px;" v-loading="reportloadding">
-				<template v-if="chartList.length">
-					<div v-for="(item,index) in chartList" :key="index" class="chart-item" @click="gething(item,index)" >
-						<p class="chart_tit">{{item.ChartName}}</p>
-						<img :src="item.ChartImage" ref="insert_img" style="width:100%;height:263px"/>
-					</div>
-				</template>
-				<img v-else src="../../assets/img/ppt_m/nodata.png" alt="" style="max-width:186px;height:195px;position:absolute;left:30%;top:30%;">
-			</div>
-		</div>
-		<!-- 封面选择弹窗 -->
-		<div class="first_dialog" v-if="isShowdialog">
-			<div class="dialog-min">
-				<header class="dialog-top">
-					<span>选择封面</span>
-					<img src="~@/assets/img/ppt_m/close.png" alt="" class="close_ico" @click="closeDialog">
-				</header>
-				<div class="dialog-bg" :style="'backgroundImage:url('+firstPage.bg+');backgroundPosition:center;backgroundRepeat:no-repeat;backgroundSize:cover;'">
-					<div style="width:62%; font-size:16px; text-align:center; line-height:1.6; color:#fff; position:absolute; right:20px; top:50%;">
-						<p style="height:5px; border-top:1px solid #fff;margin-bottom:21px;"></p>
-						<!-- <p style="max-width:90%; font-size:28px; line-height:1.4; font-weight:bolder; margin:0 auto;">{{firstPage.title}}</p> -->
-						<input 
-						type="text" 
-						style="max-width:90%; font-size:28px; line-height:1.4; font-weight:bolder; margin:0 auto;background:transparent;color:#fff;border:none;text-align:center;" 
-						v-model="firstPage.title" 
-						placeholder="请输入标题">
-						<p style="display:flex; align-items:center; justify-content:center;margin:10px 0;">
-							<span style="display:inline-block; width:15px; margin-right:5px; border-top:1px solid #fff;"></span>
-							<span>弘则弥道(上海)投资咨询有限公司</span>
-							<span style="display:inline-block; width:14px; height:14px; background:#fff; border-radius:100%; margin:0 5px;"></span>
-							<input 
-							type="text" 
-							style="width:80px;background:transparent;color:#fff;border:none;text-align:center;display:inline-block" 
-							v-model="firstPage.type"
-							placeholder="请输入类型">
-							<span style="display:inline-block; width:15px; margin-left:5px; border-top:1px solid #fff;"></span>
-						</p>
-						<p>FICC研究部</p>
-						<el-date-picker
-							v-model="firstPage.date"
-							type="month"
-							ref="date_pic"
-							format="yyyy年M月"
-							value-format="yyyy年M月"
-							placeholder="请选择日期">
-						</el-date-picker>
-						<p style="width:80%; height:1px; border-bottom:1px solid #fff; margin:21px auto 0;"></p>
-					</div>
-					<!-- <img src="~@/assets/img/ppt_m/bg_select.png" alt="" class="select_ico"> -->
-				</div>
-				<div class="dialog-bot">
-					<span></span>
-					<div>
-						<el-button  type="primary" style="width:120px" @click="saveFirstPage">保存</el-button>
-						<el-button style="width:120px" @click="changeBg">换一个模板</el-button>
-					</div>
-				</div>
-			</div>
-		</div>
-		<el-dialog
-		title="提示" 
-		:visible.sync="isSave"
-		:close-on-click-modal="false"
-		:modal-append-to-body='false'
-		:show-close="false"
-		@close="cancelHandle"
-		center
-		width="30%">
-			<div slot="title" style="display:flex;align-items:center;">
-				<img :src="$icons.warn" style="color:#fff;width:16px;height:16px;margin-right:5px;">
-				<span style="font-size:16px;">提示</span>
-			</div>
-			<div style="color:#3377FF;font-size:24px;padding-top:54px;text-align:center;">保存成功</div>
-			<div style="display:flex;justify-content:center;margin:45px 0 47px;">
-				<el-button type="primary" style="width:120px;margin-right:60px;" @click="previewHandle">预览发布</el-button>
-				<el-button type="primary" plain style="width:120px;" @click="addAgain">返回列表</el-button>
-			</div>
-		</el-dialog>
-	</div>
-</template>
-
-<script>
-import { pptadd,dataBaseInterface } from '@/api/api.js';
-import html2canvas from 'html2canvas';
-import Highcharts from 'highcharts/highstock';
-import HighchartszhCN  from '@/utils/highcahrts-zh_CN'
-HighchartszhCN(Highcharts)
-import { defaultOpts, seasonOptions,getTerminal,browser } from '@/utils/defaultOptions';
-import chartMixin from './mixins/mixins';
-export default {
-	name:'',
-	mixins: [ chartMixin ],
-	components: {
-		html2canvas
-	},
-	data () {
-		return {
-			chartList:[],//图表列表
-			reportloadding:false,//图表loading
-			key_word:'',//搜索关键字
-			default_bg:0,//默认封面背景
-			firstPage:{
-				title:'',
-				bg:'',
-				type:'',
-				date: (new Date().getFullYear())+'年'+(new Date().getMonth()+1)+'月'
-			},//ppt首页
-			isSave:false,
-			isShowdialog:false,
-			pptList:[],//内容页
-			default_ppt:'',//默认选中ppt 默认最新的时间戳
-			oldNum:0,//拖拽前的位置
-			newNum:0,//拖拽后的位置
-			zchart:null,//图表配置
-			ppt_id:'',
-			/* new source */
-			chartInfo: {},//图表信息
-			dataList: [],//图表关联指标
-			options:{}
-		};
-	},
-	methods: {
-		// 获取商品图表
-		getreportlist(word){
-			$('#chartList').animate({scrollTop:0},100);
-			if( this.reportloadding ) return false;
-			this.reportloadding=true;
-			dataBaseInterface
-				.chartSearch({
-					KeyWord: word || '',
-				})
-				.then((res) => {
-					if (res.Ret !== 200) return;
-					this.chartList = res.Data || [];
-					this.reportloadding=false;
-				});
-		},
-		// 删除页
-		delPage(index) {
-			this.pptList.splice(index,1)
-		},
-		// 打开弹窗
-		openDialog() {
-			this.isShowdialog = true
-		},
-		// 点击x关闭弹窗不保存填写的信息
-		closeDialog() {
-			this.isShowdialog = false
-		},
-		// 换一个模板
-		changeBg() {
-			this.default_bg++;
-			if(this.default_bg > this.bgList.length-1) {
-				this.default_bg = 0;
-			}
-			this.$set(this.firstPage,'bg',this.bgList[this.default_bg].image_url)
-		},
-		// 保存首页
-		saveFirstPage() {
-			if(!this.firstPage.title) {
-				this.$message.warning('请输入标题!')
-			}else if(!this.firstPage.type) {
-				this.$message.warning('请输入类型!')
-			}else if(!this.firstPage.date) {
-				this.$message.warning('请选择时间!')
-			}else {
-				this.isShowdialog = false
-			}
-		},
-		shuffle() {
-      this.pptList = _.shuffle(this.pptList);
-    },
-		// 开始位置
-		dragstart(value) {
-			this.oldNum = value;
-		},
-		// 拖动完成
-		dragend(value) {
-		if (this.oldNum != this.newNum) {
-			let oldIndex = this.pptList.indexOf(this.oldNum);
-			let newIndex = this.pptList.indexOf(this.newNum);
-			let newItems = [...this.pptList];
-			// 删除老的节点
-			newItems.splice(oldIndex, 1); 
-			// 在列表中目标位置增加新的节点
-			newItems.splice(newIndex, 0, this.oldNum);
-			this.pptList = [...newItems];
-			// console.log(this.pptList)
-		}
-		},
-    // 目标位置
-		dragenter(value) {
-			this.newNum = value;  
-		},
-		// 添加页
-		addPage(index) {
-			let obj ={
-				title:'',
-				resource_id:'',
-				timestamp:new Date().getTime()
-			}
-			if(index == 'last') {
-				this.pptList.push(obj)
-				// 定位到最后一页
-				this.default_ppt = this.pptList[this.pptList.length-1].timestamp;
-			}else {
-				this.pptList.splice(index,0,obj)
-				// 定位到最新的一页
-				this.default_ppt = this.pptList[index].timestamp;
-			}
-		},
-		// 获取图表信息
-		async gething(item,index) {
-			if(!this.pptList.length) {
-				this.$message.warning('请先添加ppt正文!')
-			}else {
-
-				let have_bool = this.pptList.some(x => x.resource_id === item.UniqueCode);
-				if(have_bool) return this.$message.warning('该图表已被使用');
-
-
-				const { Data } = await dataBaseInterface.getChartByCode({
-					UniqueCode: item.UniqueCode
-				})
-				this.chartInfo = Data.ChartInfo;
-        		this.dataList = Data.EdbInfoList;
-
-				// 定位指定的图表
-				this.pptList.forEach(pptItem => {
-					if(pptItem.timestamp === this.default_ppt) {
-						this.$set(pptItem,'resource_id',item.UniqueCode)
-					}
-				})
-
-				this.setOptions();
-
-				this.$nextTick(()=> {
-					const new_options = { ...defaultOpts, ...this.options };
-					new_options.chart = {
-						backgroundColor: 'transparent'
-					}
-					let is_scatter = this.options.series ? this.options.series.every(_ => _.type === 'scatter') : false ;
-					is_scatter ? Highcharts.chart('container'+item.UniqueCode, new_options) : Highcharts.stockChart('container'+item.UniqueCode, new_options);
-				})
-			}	
-		},
-
-		// 切换选中的ppt页
-		choosePPtItem(item,index,type) {
-			this.default_ppt = item.timestamp;
-			if(type == 0) {
-				let h_item = $('#pptItem'+index)[0].offsetHeight+80;
-				this.$refs.pptmid.scrollTo(0,parseInt(h_item*index),100)
-			}
-		},
-		// 保存为草稿
-		savePPt() {
-			console.log(this.firstPage,this.pptList)
-			if(!this.firstPage.title) {
-				this.$message.warning('请填写封面标题!')
-			}else if(!this.firstPage.type) {
-				this.$message.warning('请填写封面类型!')
-			}else if(!this.firstPage.date) {
-				this.$message.warning('请填写封面日期!')
-			}else if(!this.pptList.length) {
-				this.$message.warning('请添加ppt!')
-			}else {
-				// 校验ppt每一页必须有标题和内容
-				let B_check =  this.pptList.every(item => {
-					return item.title
-				})
-				let B_check2 =  this.pptList.every(item => {
-					return item.resource_id
-				})
-				if(!B_check) {
-					this.$message.warning('请填写ppt标题!')
-				}else if(!B_check2) {
-					this.$message.warning('请插入ppt内容!')
-				}else {
-					let content_page = []
-					this.pptList.forEach(item => {
-						content_page.push({
-							ResourceId:item.resource_id,
-							Title:item.title,
-							Timestamp:item.timestamp
-						})
-					})
-					let params = {
-						FirstPage:{
-							Title:this.firstPage.title,
-							ReportType:this.firstPage.type,
-							PptDate:this.firstPage.date,
-							ImgUrl:this.firstPage.bg,
-							BackIndex:parseInt(this.default_bg)
-						},
-						ContentPage:content_page,
-						PptId:this.ppt_id||0
-					}
-					pptadd(params).then(res => {
-						if(res.Ret == 200) {
-							this.$message.success(res.Msg)
-							this.ppt_id = res.Data.PptId;
-							// this.isSave = true;
-						}else {
-						}
-					})
-				}
-			}
-		},
-		cancelHandle() {
-			this.isSave = false
-		},
-		// 预览发布
-		previewHandle() {
-			if(this.ppt_id) {
-				sessionStorage.setItem('ppt_id',this.ppt_id);
-				sessionStorage.setItem('ppt_auth','true');
-				this.$router.push({path:'/pptdtl'});
-				// let {href} = this.$router.resolve({name:'预览ppt'});
-				// window.open(href,'_blank');
-			}else {
-				this.$message.warning('请先保存!')
-			}
-		},
-		// 返回列表
-		addAgain() {
-			this.$router.push({path:'/pptlist'});
-		},
-	},
-	created() {
-		
-	},
-	updated() {
-		// reset
-		$('.el-date-editor .el-input__inner').css({backgroundColor: 'transparent',border:'none',color:'#fff',textAlign:'center',fontSize:'16px'});
-		$('.el-date-editor .el-icon-date' ).css({display:'none'});
-		$('.ppt-item').css('height',$('.ppt-item').width()*0.7);
-	},
-	mounted() {
-		this.getreportlist();
-		this.firstPage.bg = this.bgList[0].image_url;
-	},
-}
-</script>
-<style lang='scss' scoped>
-* {
-	box-sizing: border-box;
-}
-/* 控制文字显示两行 */
-.text_twoLine {
-  overflow:hidden;
-  text-overflow:ellipsis;
-  display:-webkit-box;
-  -webkit-box-orient:vertical;
-  -webkit-line-clamp:2;
-}
-/*修改滚动条样式*/
-	div::-webkit-scrollbar{
-		width:5px;
-		height:5px;
-	}
-	div::-webkit-scrollbar-track{
-		background: rgb(239, 239, 239);
-		border-radius:2px;
-	}
-	div::-webkit-scrollbar-thumb{
-		background: #ccc;
-		border-radius:10px;
-	}
-	div::-webkit-scrollbar-thumb:hover{
-		background: #888;
-	}
-	div::-webkit-scrollbar-corner{
-		background: #179a16;
-	}
-/**/
-// reset
-.addppt-container {
-	background: #fff;
-	padding: 20px;
-	display: flex;
-	position: relative;
-	// justify-content: space-between;
-	.flip-list-move {
-    	transition: transform 0.5s;
-   }
-	.addppt-left-cont {
-		// max-width: 260px;
-		max-width: 15%;
-		min-width: 190px;
-		border: 1px solid #B2B9C3;
-		max-height: calc(100vh - 125px);
-		padding-bottom: 12px;
-		overflow-y: auto;
-		overflow-x: hidden;
-		.first-page {
-			width: 100%;
-			height: 180px;
-			margin-bottom: 30px;
-			padding: 5px 7px;
-			position: relative;
-			.shade_first {
-				position: absolute;
-				left: 50%;
-				top: 50%;
-				transform: translate(-50%,-50%);
-				color: #fff;
-				img {
-					width: 44px;
-					height: 44px;
-					display: block;
-					margin: 0 auto 11px;
-				}
-			}
-			.first-bg {
-				// min-width: 267px;
-				max-width:100%;
-				height: 180px;
-			}
-		}
-		.drag-item {
-			height: 80px;
-			padding: 20px 56px 20px 7px;
-			border: 1px solid #ccc;
-			position: relative;
-			display: flex;
-			align-items: center;
-			&.choose {
-				border-color: rgba($color: #4B8DFF, $alpha: 1);
-			}
-			.drag-left {
-				width: 40px;
-				height: 34px;
-				margin-right: 10px;
-			}
-			.drag-right {
-				width: 168px;
-				word-break: break-all;
-				color: #666;
-				font-size: 14px;
-			}
-			.close_ico {
-				width: 12px;
-				height: 12px;
-				position: absolute;
-				right: 10px;
-				top: 10px;
-			}
-			.move_ico {
-				width: 12px;
-				height: 12px;
-				position: absolute;
-				right: 10px;
-				top: 38px;
-			}
-		}
-	}
-	.addppt-mid-cont {
-		max-width: 850px;
-		min-width: 700px;
-		flex: 1;
-		max-height: calc(100vh - 125px);
-		overflow-y: auto;
-		overflow-x: hidden;
-		padding: 30px 14px;
-		border:1px solid #B2B9C3;
-		margin: 0 5px;
-		.ppt-list {
-			position: relative;
-			.add_ico {
-				width: 28px;
-				height: 28px;
-				display: block;
-				margin-bottom: 20px;
-			}
-			.ppt-item {
-				width: 100%;
-				height: 580px;
-				background: url('~@/assets/img/pptnextimg.png') no-repeat center;
-				background-size: cover;
-				margin-bottom: 30px;
-				position: relative;
-				border: 4px solid transparent;
-				&.choose {
-					// box-shadow: 1px 1px 2px rgba($color: #409eff, $alpha: 0.6);
-					border: 4px solid rgba($color: #4B8DFF, $alpha: 0.7);
-				}
-				.item_tit {
-					width: 65%;
-					position: absolute;
-					left: 90px;
-					top: 40px;
-					font-size: 24px;
-					border: none;
-					color: #666;
-					background: transparent;
-				}
-			}
-			.last-page {
-				max-width: 850px;
-				height: 580px;
-			}
-			.container {
-				width: 80%;
-				position: absolute;
-				left: 50%;
-				top: 55%;
-				transform: translate(-50%,-50%);
-			}
-		}
-	}
-	.addppt-right-cont {
-		width: 26%;
-		.chart-item {
-			text-align: center;
-			color: #74818D;
-			font-size: 18px;
-			margin-bottom: 12px;
-		}
-	}
-	.first_dialog {
-		position: fixed;
-		top: 0;
-		right: 0;
-		left: 0;
-		bottom: 0;
-		background:rgba($color: #000000, $alpha: 0.4);
-		z-index: 999;
-		.dialog-min {
-			width: 50%;
-			padding: 30px 54px 26px;
-			position: absolute;
-			left: 50%;
-			top: 50%;
-			transform: translate(-50%,-50%);
-			background: #fff;
-			.dialog-top {
-				display: flex;
-				justify-content: space-between;
-				align-items: center;
-				font-size: 24px;
-				color: #1F2E4D;
-				margin-bottom: 22px;
-				.close_ico {
-					width: 28px;
-					height: 28px;
-				}
-			}
-			.dialog-bg {
-				width: 100%;
-				height: 645px;
-				position: relative;
-				.select_ico {
-					width: 48px;
-					height: 48px;
-					position: absolute;
-					right: 15px;
-					top: 15px;
-				}
-			}
-			.dialog-bot {
-				margin-top: 22px;
-				display: flex;
-				justify-content: space-between;
-				align-items: center;
-			}
-		}
-	}
-}
-</style>

+ 0 - 761
src/views/ppt_manage/editpptNew.vue

@@ -1,761 +0,0 @@
-<template>
-	<div class="addppt-container">
-		<div class="addppt-left-cont">
-			<div class="first-page" @click="openDialog">
-				<img :src="firstPage.bg" alt="" class="first-bg" v-if="firstPage.bg">
-				<div class="shade_first" v-if="!firstPage.title">
-					<img src="~@/assets/img/ppt_m/add_first.png" alt="">
-					<span>选择封面页</span>
-				</div>
-				<div v-else style="width:70%;textAlign:center;font-size:12px;line-height:1.6; color:#fff; position:absolute; right:10px; top:50%;">
-					<p>{{firstPage.title}}</p>
-					<p>{{firstPage.date}}</p>
-				</div>
-			</div>
-			<template v-if="pptList.length">
-				<div style="color:#409EFF;fontSize:15px;paddingLeft:10px;marginBottom:4px;">已添加{{pptList.length}}页</div>
-				<transition-group name="flip-list">
-					<div 
-					v-for="(item,index) in pptList" 
-					:key="item" 
-					draggable="true" 
-					:class="['drag-item',{'choose':item.timestamp===default_ppt}]"
-					@click="choosePPtItem(item,index,0)"
-					@dragstart="dragstart(item)" 
-					@dragenter="dragenter(item)" 
-					@dragend="dragend(item)">
-						<img src="~@/assets/img/ppt_m/pppage_ico.png" class="drag-left">
-						<div class="drag-right text_twoLine">
-							{{item.title}}
-						</div>
-						<el-popconfirm
-						@onConfirm="delPage(index)"
-						confirmButtonText='删除'
-						cancelButtonText='取消'
-						confirmButtonType="text"
-						icon="el-icon-info"
-						iconColor="red"
-						title="确定删除该页ppt吗"
-						>
-							<img src="~@/assets/img/ppt_m/close.png" class="close_ico" slot="reference">
-						</el-popconfirm>
-						<img src="~@/assets/img/ppt_m/move_ico.png" alt="" class="move_ico">
-						<span style="position:absolute;right:10px;bottom:5px;color:#888;fontSize:12px;">第{{index+1}}页</span>
-					</div>
-				</transition-group>
-			</template>
-			<div style="color:#A3AFBB;fontSize:14px;textAlign:center;marginTop:124px;" v-else>
-				<img src="~@/assets/img/ppt_m/noppt.png" alt="" style="width:60px;height:33px;display:block;margin:0 auto 10px;">	
-				<span>添加正文后,会在这里生成</span>
-			</div>
-		</div>
-		<!-- ppt正文 -->
-		<div class="addppt-mid-cont" ref="pptmid">
-			<template v-if="pptList.length">
-				<transition-group name="flip-list">
-					<div class="ppt-list" v-for="(item,index) in pptList" :key="item">
-						<div style="display:flex;alignItems:center;justifyContent:space-between;">
-							<img src="~@/assets/img/ppt_m/add.png" alt="" class="add_ico" @click="addPage(index)">
-							<el-popconfirm
-							@onConfirm="delPage(index)"
-							confirmButtonText='删除'
-							cancelButtonText='取消'
-							confirmButtonType="text"
-							icon="el-icon-info"
-							iconColor="red"
-							title="确定删除该页ppt吗"
-							>
-								<img src="~@/assets/img/ppt_m/close.png" alt="" style="width:18px;height:18px;marginBottom:20px;" slot="reference">
-							</el-popconfirm>
-						</div>
-						<div :class="['ppt-item',{'choose':item.timestamp===default_ppt}]" @click="choosePPtItem(item,index,1)" :id="'pptItem'+index">
-							<input type="text" placeholder="请输入页面标题" class="item_tit" v-model="item.title"> 
-							<div class="container" :id="'container'+item.resource_id" v-if="item.resource_id"></div>
-							<div class="container" v-if="item.noSource">
-								<img src="https://hzstatic.hzinsights.com/static/ppt_default.png" alt="" style="width:400px;height:300px;margin:0 auto;display:block;">
-							</div>
-						</div>
-						<span style="position:absolute; bottom:3%; right:20px; color:#666;">第{{index+1}}页</span>
-					</div>
-				</transition-group>
-			</template>
-			<div v-else class="ppt-list" style="display:flex;alignItems:center;" @click="addPage('last')">
-				<img src="~@/assets/img/ppt_m/add.png" alt="" class="add_ico" style="display:inline-block;marginBottom:0">
-				<span style="display:inline;color:#999;fontSize:20px;">点击添加正文</span>
-			</div>
-			<div class="ppt-list" v-if="pptList.length">
-				<img src="~@/assets/img/ppt_m/add.png" alt="" class="add_ico" @click="addPage('last')">
-			</div>
-		</div>
-		<!-- 右侧图表 -->
-		<div class="addppt-right-cont">
-			<!-- <span style="marginRight:43%"></span> -->
-			<el-button type="primary" @click="previewHandle" style="marginRight:15px;">去发布</el-button>
-			<el-button type="primary" @click="savePPt" plain>保存</el-button>
-			<el-input placeholder="关键字查找" v-model="key_word" size="medium" prefix-icon="el-icon-search" @input="getreportlist(key_word)" style="margin:20px 0;maxWidth:100%;"></el-input>
-			<div id="chartList" style="height:calc(100vh - 250px); overflow-x:hidden; overflow-y:auto; border:1px solid #B2B9C3; position:relative;padding:30px 20px;" v-loading="reportloadding">
-				<template v-if="chartList.length">
-					<div v-for="(item,index) in chartList" :key="index" class="chart-item" @click="gething(item,index)" >
-						<p class="chart_tit">{{item.ChartName}}</p>
-						<img :src="item.ChartImage" ref="insert_img" style="width:100%;height:263px"/>
-					</div>
-				</template>
-				<img v-else src="../../assets/img/ppt_m/nodata.png" alt="" style="max-width:186px;height:195px;position:absolute;left:30%;top:30%;">
-			</div>
-		</div>
-		<!-- 封面选择弹窗 -->
-		<div class="first_dialog" v-if="isShowdialog">
-			<div class="dialog-min">
-				<header class="dialog-top">
-					<span>选择封面</span>
-					<img src="~@/assets/img/ppt_m/close.png" alt="" class="close_ico" @click="closeDialog">
-				</header>
-				<div class="dialog-bg" :style="'backgroundImage:url('+firstPage.bg+');backgroundPosition:center;backgroundRepeat:no-repeat;backgroundSize:cover;'">
-					<div style="width:62%; font-size:16px; text-align:center; line-height:1.6; color:#fff; position:absolute; right:20px; top:50%;">
-						<p style="height:5px; border-top:1px solid #fff;marginBottom:21px;"></p>
-						<!-- <p style="max-width:90%; font-size:28px; line-height:1.4; font-weight:bolder; margin:0 auto;">{{firstPage.title}}</p> -->
-						<input 
-						type="text" 
-						style="max-width:90%; font-size:28px; line-height:1.4; font-weight:bolder; margin:0 auto;background:transparent;color:#fff;border:none;textAlign:center;" 
-						v-model="firstPage.title" 
-						placeholder="请输入标题">
-						<p style="display:flex; align-items:center; justify-content:center;margin:10px 0;">
-							<span style="display:inline-block; width:15px; margin-right:5px; border-top:1px solid #fff;"></span>
-							<span>弘则弥道(上海)投资咨询有限公司</span>
-							<span style="display:inline-block; width:14px; height:14px; background:#fff; border-radius:100%; margin:0 5px;"></span>
-							<input 
-							type="text" 
-							style="max-width:80px;background:transparent;color:#fff;border:none;textAlign:center;display:inline-block" 
-							v-model="firstPage.type" 
-							placeholder="请输入类型">
-							<span style="display:inline-block; width:15px; margin-left:5px; border-top:1px solid #fff;"></span>
-						</p>
-						<p>FICC研究部</p>
-						<el-date-picker
-							v-model="firstPage.date"
-							type="month"
-							ref="date_pic"
-							format="yyyy年M月"
-							value-format="yyyy年M月"
-							placeholder="请选择日期">
-						</el-date-picker>
-						<p style="width:80%; height:1px; border-bottom:1px solid #fff; margin:21px auto 0;"></p>
-					</div>
-					<!-- <img src="~@/assets/img/ppt_m/bg_select.png" alt="" class="select_ico"> -->
-				</div>
-				<div class="dialog-bot">
-					<span></span>
-					<div>
-						<el-button  type="primary" style="width:120px" @click="saveFirstPage">保存</el-button>
-						<el-button style="width:120px" @click="changeBg">换一个模板</el-button>
-					</div>
-				</div>
-			</div>
-		</div>
-		<el-dialog
-		title="提示" 
-		:visible.sync="isSave"
-		:close-on-click-modal="false"
-		:modal-append-to-body='false'
-		:show-close="false"
-		@close="cancelHandle"
-		center
-		width="30%">
-			<div slot="title" style="display:flex;alignItems:center;">
-				<img :src="$icons.warn" style="color:#fff;width:16px;height:16px;marginRight:5px;">
-				<span style="fontSize:16px;">提示</span>
-			</div>
-			<div style="color:#3377FF;fontSize:24px;paddingTop:54px;text-align:center;">编辑成功</div>
-			<div style="display:flex;justifyContent:center;margin:45px 0 47px;">
-				<el-button type="primary" style="width:120px;marginRight:60px;" @click="previewHandle">预览发布</el-button>
-				<el-button type="primary" plain style="width:120px;" @click="back">返回列表</el-button>
-			</div>
-		</el-dialog>
-	</div>
-</template>
-
-<script>
-import { pptedit,pptdetail,dataBaseInterface } from '@/api/api.js';
-import html2canvas from 'html2canvas';
-import Highcharts from 'highcharts/highstock';
-import HighchartszhCN  from '@/utils/highcahrts-zh_CN'
-HighchartszhCN(Highcharts)
-import { defaultOpts, seasonOptions,getTerminal,browser } from '@/utils/defaultOptions';
-import chartMixin from './mixins/mixins'
-
-export default {
-	name:'',
-	mixins: [ chartMixin ],
-	components: {
-		html2canvas
-	},
-	data () {
-		return {
-			chartList:[],//图表列表
-			reportloadding:false,//图表loading
-			key_word:'',//搜索关键字
-			default_bg:0,//默认封面背景
-			firstPage:{
-				title:'',
-				bg:'',
-				type:'',
-				date:''
-			},//ppt首页
-			isSave:false,
-			isShowdialog:false,
-			pptList:[],//内容页
-			default_ppt:'',//默认选中ppt的时间戳
-			oldNum:0,//拖拽前的位置
-			newNum:0,//拖拽后的位置
-			zchart:null,//图表配置
-			axisOption:{
-				gridLineWidth: 0,
-				minorGridLineWidth: 0,
-				opposite: false,
-				lineWidth: 1,
-				lineColor: '#bfbfbf',
-				tickColor: '#bfbfbf',
-				tickLength: 5,
-				tickWidth: 1,
-				title: {
-					text: ""
-				},
-				endOnTick: false,
-				startOnTick: false,
-				labels: {x: -5,},
-				visible: false,
-			},
-			hcredits:'',
-			datasource:'',
-			ppt_id:this.$route.query.id,
-			loading:null,
-			/* new source */
-			chartInfo: {},//图表信息
-			dataList: [],//图表关联指标
-			options:{}
-		};
-	},
-	methods: {
-		// 获取图表列表
-		getreportlist(word){
-			$('#chartList').animate({scrollTop:0},100);
-			if( this.reportloadding ) return false;
-			this.reportloadding=true;
-			dataBaseInterface
-				.chartSearch({
-					KeyWord: word || '',
-				})
-				.then((res) => {
-					if (res.Ret !== 200) return;
-					this.chartList = res.Data || [];
-					this.reportloadding=false;
-				});
-		},
-		// 获取ppt详情
-		getpptdtl(){
-			this.loading = this.$loading({
-				target:'.addppt-container',
-				lock: true,
-				text: '拼命加载中...',
-				spinner: 'el-icon-loading',
-				background: 'rgba(0, 0, 0, 0.6)'
-			});
-			pptdetail({PptId:this.ppt_id}).then(res =>{
-				if( res.Ret === 200 ){
-					let pptpage=res.Data.PptPages || [];
-					this.firstPage={
-						title:res.Data.Ppt.Title,
-						type:res.Data.Ppt.ReportType,
-						date:res.Data.Ppt.PptDate,
-						bg:this.bgList[parseInt(pptpage[0].BackIndex)].image_url,
-						ppt_pages_id:parseInt(pptpage[0].PptPagesId),
-					}
-					this.pageitem=[];
-					pptpage.forEach((item,i)=>{
-						if( i!=0 ){
-							this.pptList.push({
-								title:item.Title,
-								ppt_pages_id:parseInt(item.PptPagesId),
-								resource_id:item.ResourceId,
-								timestamp:parseInt(item.Timestamp)
-							});
-						}
-					});
-					this.default_ppt = this.pptList[0].timestamp;//默认选中第一个
-					this.listHandle()
-				}
-			});
-		},
-		async listHandle() {
-			// this.pptList.forEach((item,index) => {
-			// 	await this.getChart(item,index)
-			// })
-			for(let i=0;i<this.pptList.length;i++) {
-				await this.getChart(this.pptList[i],i)
-			}
-		},
-		// 加载图表
-		async getChart(item,index) {
-
-			const { Data } = await dataBaseInterface.getChartByCode({
-				UniqueCode: item.resource_id
-			})
-			this.chartInfo = Data.ChartInfo;
-			this.dataList = Data.EdbInfoList;
-
-			Data.Status && this.setOptions();
-
-			this.$nextTick(()=> {
-				if(	Data.Status) {
-					const new_options = { ...defaultOpts, ...this.options };
-					new_options.chart = {
-						backgroundColor: 'transparent'
-					}
-					let is_scatter = this.options.series ? this.options.series.every(_ => _.type === 'scatter') : false ;
-					is_scatter ? Highcharts.chart('container'+item.resource_id, new_options) : Highcharts.stockChart('container'+item.resource_id, new_options);
-				}else {
-					this.$set(item,'noSource',true);
-				}
-				if(index === this.pptList.length-1)  {
-					this.loading.close();
-				}
-			})
-		},
-		// 删除页
-		delPage(index) {
-			this.pptList.splice(index,1)
-		},
-		// 打开弹窗
-		openDialog() {
-			this.isShowdialog = true
-		},
-		// 点击x关闭弹窗不保存填写的信息
-		closeDialog() {
-			this.isShowdialog = false
-		},
-		// 换一个模板
-		changeBg() {
-			this.default_bg++;
-			if(this.default_bg > this.bgList.length-1) {
-				this.default_bg = 0;
-			}
-			this.$set(this.firstPage,'bg',this.bgList[this.default_bg].image_url)
-		},
-		// 保存首页
-		saveFirstPage() {
-			if(!this.firstPage.title) {
-				this.$message.warning('请输入标题!')
-			}else if(!this.firstPage.type) {
-				this.$message.warning('请输入类型!')
-			}else if(!this.firstPage.date) {
-				this.$message.warning('请选择时间!')
-			}else {
-				this.isShowdialog = false
-			}
-		},
-		shuffle() {
-       	this.pptList = _.shuffle(this.pptList);
-      },
-      // 开始位置
-      dragstart(value) {
-       	this.oldNum = value;
-      },
-      // 拖动完成
-      dragend(value) {
-			if (this.oldNum != this.newNum) {
-				let oldIndex = this.pptList.indexOf(this.oldNum);
-				let newIndex = this.pptList.indexOf(this.newNum);
-				let newItems = [...this.pptList];
-				// 删除老的节点
-				newItems.splice(oldIndex, 1); 
-				// 在列表中目标位置增加新的节点
-				newItems.splice(newIndex, 0, this.oldNum);
-				this.pptList = [...newItems];
-				console.log(this.pptList)
-			}
-      },
-      // 目标位置
-      dragenter(value) {
-        this.newNum = value;
-		},
-		// 添加页
-		addPage(index) {
-			let obj ={
-				title:'',
-				resource_id:'',
-				timestamp:new Date().getTime()
-			}
-			if(index == 'last') {
-				this.pptList.push(obj);
-				this.default_ppt = this.pptList[this.pptList.length-1].timestamp;
-			}else {
-				this.pptList.splice(index,0,obj);
-				this.default_ppt = this.pptList[index].timestamp;
-			}
-		},
-		// 获取图表
-		async gething(item,index) {
-
-			let have_bool = this.pptList.some(x => x.resource_id === item.UniqueCode);
-			if(have_bool) return this.$message.warning('该图表已被使用');
-
-			const { Data } = await dataBaseInterface.getChartByCode({
-				UniqueCode: item.UniqueCode
-			})
-			this.chartInfo = Data.ChartInfo;
-			this.dataList = Data.EdbInfoList;
-
-			// 定位指定的图表
-			this.pptList.forEach(pptItem => {
-				if(pptItem.timestamp === this.default_ppt) {
-					this.$set(pptItem,'resource_id',item.UniqueCode)
-					this.$set(pptItem,'noSource',false)
-				}
-			})
-
-			this.setOptions();
-
-			this.$nextTick(()=> {
-				const new_options = { ...defaultOpts, ...this.options };
-				new_options.chart = {
-					backgroundColor: 'transparent'
-				}
-				
-				let is_scatter = this.options.series ? this.options.series.every(_ => _.type === 'scatter') : false ;
-				is_scatter ? Highcharts.chart('container'+item.UniqueCode, new_options) : Highcharts.stockChart('container'+item.UniqueCode, new_options);
-				
-			})
-		},
-		// 切换选中的ppt页
-		choosePPtItem(item,index,type) {
-			this.default_ppt = item.timestamp;
-			if(type == 0) {
-				let h_item = $('#pptItem'+index)[0].offsetHeight+80;
-				this.$refs.pptmid.scrollTo(0,parseInt(h_item*index),100)
-			}
-		},
-		// 保存为草稿
-		savePPt() {
-			console.log(this.firstPage,this.pptList)
-			if(!this.firstPage.title) {
-				this.$message.warning('请填写封面标题!')
-			}else if(!this.firstPage.type) {
-				this.$message.warning('请填写封面类型!')
-			}else if(!this.firstPage.date) {
-				this.$message.warning('请填写封面日期!')
-			}else if(!this.pptList.length) {
-				this.$message.warning('请添加ppt!')
-			}else {
-				// 校验ppt每一页必须有标题和内容
-				let B_check =  this.pptList.every(item => {
-					return item.title
-				})
-				let B_check2 =  this.pptList.every(item => {
-					return item.resource_id
-				})
-				if(!B_check) {
-					this.$message.warning('请填写ppt标题!')
-				}else if(!B_check2) {
-					this.$message.warning('请插入ppt内容!')
-				}else {
-					let content_page = []
-					this.pptList.forEach(item => {
-						content_page.push({
-							ResourceId:item.resource_id,
-							Title:item.title,
-							Timestamp:item.timestamp,
-							PptPagesId:item.ppt_pages_id
-						})
-					})
-					let params = {
-						FirstPage:{
-							Title:this.firstPage.title,
-							ReportType:this.firstPage.type,
-							PptDate:this.firstPage.date,
-							ImgUrl:this.firstPage.bg,
-							PptPagesId:this.firstPage.ppt_pages_id,
-							BackIndex:parseInt(this.default_bg)
-						},
-						ContentPage:content_page,
-						PptId:parseInt(this.ppt_id),
-					}
-					// console.log(params)
-					pptedit(params).then(res => {
-						if(res.Ret === 200) {
-							// this.ppt_id = res.ppt_id;
-							// this.isSave = true;
-							this.$message.success('保存成功!')
-						}
-					})
-				}
-			}
-		},
-		cancelHandle() {
-			this.isSave = false
-		},
-		// 预览发布
-		previewHandle() {
-			sessionStorage.setItem('ppt_id',this.ppt_id);
-			this.$router.push({path:'/pptdtl'});
-			// let {href} = this.$router.resolve({name:'预览ppt'});
-			// window.open(href,'_blank');
-		},
-		// 返回列表
-		back() {
-			this.$router.push({path:'/pptlist'});
-		},
-		init() {
-			this.key_word = ''//搜索关键字
-			this.default_bg = 0//默认封面背景
-			this.firstPage = {
-				title:'',
-				type:'',
-				date:'',
-				bg:this.bgList[0].image_url
-			}//ppt首页
-			this.pptList = []//内容页
-			this.ppt_id = ''
-		},
-	},
-	created() {
-		
-	},
-	updated() {
-		// reset
-		$('.el-date-editor .el-input__inner').css({backgroundColor: 'transparent',border:'none',color:'#fff',textAlign:'center',fontSize:'16px'});
-		$('.el-date-editor .el-icon-date' ).css({display:'none'});
-		$('.ppt-item').css('height',$('.ppt-item').width()*0.7);
-	},
-	mounted() {
-		this.getpptdtl();
-		this.getreportlist();
-		// this.firstPage.bg = this.bgList[0].image_url;
-	},
-}
-</script>
-<style lang='scss' scoped>
-* {
-	box-sizing: border-box;
-}
-/* 控制文字显示两行 */
-.text_twoLine {
-  overflow:hidden;
-  text-overflow:ellipsis;
-  display:-webkit-box;
-  -webkit-box-orient:vertical;
-  -webkit-line-clamp:2;
-}
-/*修改滚动条样式*/
-	div::-webkit-scrollbar{
-		width:5px;
-		height:5px;
-	}
-	div::-webkit-scrollbar-track{
-		background: rgb(239, 239, 239);
-		border-radius:2px;
-	}
-	div::-webkit-scrollbar-thumb{
-		background: #ccc;
-		border-radius:10px;
-	}
-	div::-webkit-scrollbar-thumb:hover{
-		background: #888;
-	}
-	div::-webkit-scrollbar-corner{
-		background: #179a16;
-	}
-/**/
-// reset
-.addppt-container {
-	background: #fff;
-	padding: 20px;
-	display: flex;
-	position: relative;
-	// justify-content: space-between;
-	.flip-list-move {
-    	transition: transform 0.5s;
-   }
-	.addppt-left-cont {
-		// max-width: 260px;
-		max-width: 15%;
-		min-width: 190px;
-		border: 1px solid #B2B9C3;
-		max-height: calc(100vh - 125px);
-		padding-bottom: 12px;
-		overflow-y: auto;
-		overflow-x: hidden;
-		.first-page {
-			width: 100%;
-			height: 180px;
-			margin-bottom: 30px;
-			padding: 5px 7px;
-			position: relative;
-			.shade_first {
-				position: absolute;
-				left: 50%;
-				top: 50%;
-				transform: translate(-50%,-50%);
-				color: #fff;
-				img {
-					width: 44px;
-					height: 44px;
-					display: block;
-					margin: 0 auto 11px;
-				}
-			}
-			.first-bg {
-				// min-width: 267px;
-				max-width:100%;
-				height: 180px;
-			}
-		}
-		.drag-item {
-			height: 80px;
-			padding: 20px 56px 20px 7px;
-			border: 1px solid #ccc;
-			position: relative;
-			display: flex;
-			align-items: center;
-			&.choose {
-				border-color: rgba($color: #4B8DFF, $alpha: 1);
-			}
-			.drag-left {
-				width: 40px;
-				height: 34px;
-				margin-right: 10px;
-			}
-			.drag-right {
-				width: 168px;
-				word-break: break-all;
-				color: #666;
-				font-size: 14px;
-			}
-			.close_ico {
-				width: 12px;
-				height: 12px;
-				position: absolute;
-				right: 10px;
-				top: 10px;
-			}
-			.move_ico {
-				width: 12px;
-				height: 12px;
-				position: absolute;
-				right: 10px;
-				top: 38px;
-			}
-		}
-	}
-	.addppt-mid-cont {
-		max-width: 850px;
-		min-width: 700px;
-		flex: 1;
-		max-height: calc(100vh - 125px);
-		overflow: auto;
-		// overflow-x: hidden;
-		padding: 30px 14px;
-		border:1px solid #B2B9C3;
-		margin: 0 5px;
-		.ppt-list {
-			position: relative;
-			.add_ico {
-				width: 28px;
-				height: 28px;
-				display: block;
-				margin-bottom: 20px;
-			}
-			.ppt-item {
-				width: 100%;
-				height: 580px;
-				background: url('~@/assets/img/pptnextimg.png') no-repeat center;
-				background-size: cover;
-				margin-bottom: 30px;
-				position: relative;
-				border: 4px solid transparent;
-				&.choose {
-					// box-shadow: 1px 1px 2px rgba($color: #409eff, $alpha: 0.6);
-					border: 4px solid rgba($color: #4B8DFF, $alpha: 0.7);
-				}
-				.item_tit {
-					width: 65%;
-					position: absolute;
-					left: 90px;
-					top: 40px;
-					font-size: 24px;
-					border: none;
-					color: #666;
-					background: transparent;
-				}
-			}
-			.last-page {
-				max-width: 850px;
-				height: 580px;
-			}
-			.container {
-				width: 80%;
-				position: absolute;
-				left: 50%;
-				top: 55%;
-				transform: translate(-50%,-50%);
-			}
-		}
-	}
-	.addppt-right-cont {
-		width: 26%;
-		.chart-item {
-			text-align: center;
-			color: #74818D;
-			font-size: 18px;
-			margin-bottom: 12px;
-		}
-	}
-	.first_dialog {
-		position: fixed;
-		top: 0;
-		right: 0;
-		left: 0;
-		bottom: 0;
-		background:rgba($color: #000000, $alpha: 0.4);
-		z-index: 999;
-		.dialog-min {
-			width: 50%;
-			padding: 30px 54px 26px;
-			position: absolute;
-			left: 50%;
-			top: 50%;
-			transform: translate(-50%,-50%);
-			background: #fff;
-			.dialog-top {
-				display: flex;
-				justify-content: space-between;
-				align-items: center;
-				font-size: 24px;
-				color: #1F2E4D;
-				margin-bottom: 22px;
-				.close_ico {
-					width: 28px;
-					height: 28px;
-				}
-			}
-			.dialog-bg {
-				width: 100%;
-				height: 645px;
-				position: relative;
-				.select_ico {
-					width: 48px;
-					height: 48px;
-					position: absolute;
-					right: 15px;
-					top: 15px;
-				}
-			}
-			.dialog-bot {
-				margin-top: 22px;
-				display: flex;
-				justify-content: space-between;
-				align-items: center;
-			}
-		}
-	}
-}
-</style>

+ 6 - 1
src/views/ppt_manage/newVersion/components/formatPage/mixins.js

@@ -1,5 +1,6 @@
 import {checkClipboard,checkClipboardItems,getTextContentSize} from '../../utils/untils';
 import {defaultPosition} from "../../utils/config";
+import { copyFit } from '@/utils/svgToblob.js';
 import Ediotr from '../TextEditor.vue';
 import BaseShape from '../layer/Element/BaseShape.vue';
 import LineShape from "../layer/Element/LineShape.vue";
@@ -286,7 +287,11 @@ export default {
           const chartTitle = this.$store.state.ppt.chartInfoMap[chartId].chartTitle
           console.log('chart_title',chartTitle)
           try{
-            await navigator.clipboard.writeText(chartTitle)
+            if(navigator.clipboard) { //兼容禁止粘贴板的场景
+              await navigator.clipboard.writeText(chartTitle)
+            }else {
+              copyFit(chartTitle)
+            }
             this.$message.success('复制成功')
           }catch(err){
             this.$message.error('复制失败')