Commit f25c4c85 authored by zhengke's avatar zhengke

行程概要优化

parent 98c8b50b
......@@ -114,7 +114,8 @@ interface PPTBaseElement {
rotate: number
link?: PPTElementLink
name?: string
dataMapping?:DataSourceMapping
dataMapping?:DataSourceMapping,
layerName?:string
}
interface DataSourceMapping{
......@@ -177,7 +178,7 @@ export interface PPTTextElement extends PPTBaseElement {
vertical?: boolean,
contentStr?: string,
TemplateList?: unknown,
TemplateDataSource?: DataSourceType,
TemplateDataSource?: DataSourceType
}
......@@ -269,7 +270,6 @@ export interface PPTImageElement extends PPTBaseElement {
flipV?: boolean
shadow?: PPTElementShadow
colorMask?: string
layerName?: string
below?:number
}
......
import { PPTImageElement } from '@/types/slides';
import { compressionThumbnail } from './compressor';
export const ResolveLayer = async (item: any, index: number,offsetLeft:number,offsetTop:number): Promise<PPTImageElement | null> => {
export const ResolveLayer = async (item: any, index: number,offsetLeft:number,offsetTop:number,groupId:string =''): Promise<PPTImageElement | null> => {
//await compressionThumbnail(item.layer.image.toBase64(), "image/png", 0, 0.8)
try {
......@@ -26,7 +26,8 @@ export const ResolveLayer = async (item: any, index: number,offsetLeft:number,of
height,
rotate: 0,
lock: item.name.indexOf('editor')==-1 || (item.name.indexOf('editor')!=-1 && item.name.indexOf('before')!=-1),
layerName: item.layer.name
layerName: item.layer.name,
groupId:groupId
}
return element
......
......@@ -77,26 +77,29 @@ const CreateDefaultSlider = (id:string):Slide =>{
}
}
const GetSlidersHandler = async (child:any[],offsetLeft:number,offsetTop:number) : Promise<PPTElement[]> =>{
const GetSlidersHandler = async (child:any[],offsetLeft:number,offsetTop:number,groupId:string ='') : Promise<PPTElement[]> =>{
let elements = [] as Array<PPTElement>
for (let i = 0; i < child.length; i++) {
const x= child[i]
Z_INDEX--
if(x.layer.name == 'first_row') groupId='first_row'
if(x.layer.name == 'form_bg') groupId = ''
console.log(x.layer.name,groupId)
if(x.layer.typeTool){
elements.push(ResolveText(x, Z_INDEX, offsetLeft, offsetTop))
elements.push(ResolveText(x, Z_INDEX, offsetLeft, offsetTop,groupId))
}
else if(x.width && x.width>0 && x.layer.image){
let ele = await ResolveLayer(x, Z_INDEX, offsetLeft, offsetTop)
let ele = await ResolveLayer(x, Z_INDEX, offsetLeft, offsetTop,groupId)
if(ele) elements.push(ele)
}
if(x._children && x._children.length>0){
let childers = await GetSlidersHandler(x._children,offsetLeft,offsetTop) ?? []
let childers = await GetSlidersHandler(x._children,offsetLeft,offsetTop,groupId) ?? []
elements = elements.concat(childers)
}
//groupId=''
}
return elements
......
import { PPTElementShadow, PPTTextElement } from '@/types/slides';
export const ResolveText = (item: any, index: number,offsetLeft:number,offsetTop:number): PPTTextElement => {
export const ResolveText = (item: any, index: number,offsetLeft:number,offsetTop:number,groupId:string =''): PPTTextElement => {
let domLeft = item.layer.left-offsetLeft
let domwidth = item.layer.width
......@@ -90,7 +90,9 @@ export const ResolveText = (item: any, index: number,offsetLeft:number,offsetTop
lineHeight: leading,
wordSpace: tracking,
vertical: isVertical,
contentStr: content
contentStr: content,
layerName:item.layer.name,
groupId :groupId
}
if (textShadow) element.shadow = textShadow
......
......@@ -209,10 +209,22 @@ const GetTripFiledData = async () =>{
}
const travel = dataRes.data.data
const cursors = [] as Array<any>
const elementsData = [] as Array<any>
// const elementsDatas = [] as Array<any>
// let slidesIndex = 0
// let elementsIndex = null
// let elementsHeight = 0
for (let index = 0; index < slidesData.length; index++) {
const x = slidesData[index] as any;
let eles = x.elements.filter(y=>y.groupId && y.groupId=='first_row')
if(eles.length>0){
x.elements = x.elements.filter(y=>!y.groupId || y.groupId!='first_row')
let newElements = ResolveTripDaysHandler(eles)
console.log(newElements)
x.elements = x.elements.concat(newElements)
}
for (let j = 0; j < x.elements.length; j++) {
const y = x.elements[j];
let y = x.elements[j]
if(y.TemplateDataSource && y.TemplateDataSource.Content){
let dataPath = y.TemplateDataSource.Content.split('.')
let value=JSON.parse(JSON.stringify(travel));
......@@ -286,6 +298,7 @@ const GetTripFiledData = async () =>{
}
}
}
slidesStore.setSlides(slidesData)
}
} catch (error) {
......@@ -294,6 +307,43 @@ const GetTripFiledData = async () =>{
loadingObj.close()
}
const ResolveTripDaysHandler = (items)=>{
let elements = []
if(items.length>0){
let topList = items.map(item=>{ return item.top })
let max=Math.max.apply(null,topList);
let min=Math.min.apply(null,topList);
let elementsHeight = max-min
let value=datas.DataSource.TravelAatas.simpleTripInfo;
for(let i=0;i<value.length;i++){
let templateObj = JSON.parse(JSON.stringify(items))
for(let k=0;k<templateObj.length;k++){
const oo = templateObj[k].layerName;
let valueData
if(oo=='day') valueData = value[i]['DayNum']
if(oo=='title') valueData = value[i]['Title']
if(oo=='hotel') valueData = value[i]['Hotel']
if(oo=='dinner') valueData = value[i]['Zao']+'/'+value[i]['Wu']+'/'+value[i]['Wan']
templateObj[k].top += elementsHeight*i
templateObj[k].groupId +="_"+i.toString()
templateObj[k].id +="_"+i.toString()+"_"+k.toString()
if(valueData){
let txt = getHtmlPlainText(templateObj[k].content)
if(oo=='day') valueData = txt.replace(/[0-9]/ig,valueData)
templateObj[k].content = templateObj[k].content.replace(txt,valueData)
}
}
elements.push(...templateObj)
}
return elements
}
}
// 获取行程模版数据
const GetTripTemplate = async () =>{
if(!searchData.value.TempId&&!TempId.value) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment