Commit f25c4c85 authored by zhengke's avatar zhengke

行程概要优化

parent 98c8b50b
...@@ -114,7 +114,8 @@ interface PPTBaseElement { ...@@ -114,7 +114,8 @@ interface PPTBaseElement {
rotate: number rotate: number
link?: PPTElementLink link?: PPTElementLink
name?: string name?: string
dataMapping?:DataSourceMapping dataMapping?:DataSourceMapping,
layerName?:string
} }
interface DataSourceMapping{ interface DataSourceMapping{
...@@ -177,7 +178,7 @@ export interface PPTTextElement extends PPTBaseElement { ...@@ -177,7 +178,7 @@ export interface PPTTextElement extends PPTBaseElement {
vertical?: boolean, vertical?: boolean,
contentStr?: string, contentStr?: string,
TemplateList?: unknown, TemplateList?: unknown,
TemplateDataSource?: DataSourceType, TemplateDataSource?: DataSourceType
} }
...@@ -269,7 +270,6 @@ export interface PPTImageElement extends PPTBaseElement { ...@@ -269,7 +270,6 @@ export interface PPTImageElement extends PPTBaseElement {
flipV?: boolean flipV?: boolean
shadow?: PPTElementShadow shadow?: PPTElementShadow
colorMask?: string colorMask?: string
layerName?: string
below?:number below?:number
} }
......
import { PPTImageElement } from '@/types/slides'; import { PPTImageElement } from '@/types/slides';
import { compressionThumbnail } from './compressor'; 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) //await compressionThumbnail(item.layer.image.toBase64(), "image/png", 0, 0.8)
try { try {
...@@ -26,7 +26,8 @@ export const ResolveLayer = async (item: any, index: number,offsetLeft:number,of ...@@ -26,7 +26,8 @@ export const ResolveLayer = async (item: any, index: number,offsetLeft:number,of
height, height,
rotate: 0, rotate: 0,
lock: item.name.indexOf('editor')==-1 || (item.name.indexOf('editor')!=-1 && item.name.indexOf('before')!=-1), 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 return element
......
...@@ -77,26 +77,29 @@ const CreateDefaultSlider = (id:string):Slide =>{ ...@@ -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> let elements = [] as Array<PPTElement>
for (let i = 0; i < child.length; i++) { for (let i = 0; i < child.length; i++) {
const x= child[i] const x= child[i]
Z_INDEX-- 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){ 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){ 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(ele) elements.push(ele)
} }
if(x._children && x._children.length>0){ 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) elements = elements.concat(childers)
} }
//groupId=''
} }
return elements return elements
......
import { PPTElementShadow, PPTTextElement } from '@/types/slides'; 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 domLeft = item.layer.left-offsetLeft
let domwidth = item.layer.width let domwidth = item.layer.width
...@@ -90,7 +90,9 @@ export const ResolveText = (item: any, index: number,offsetLeft:number,offsetTop ...@@ -90,7 +90,9 @@ export const ResolveText = (item: any, index: number,offsetLeft:number,offsetTop
lineHeight: leading, lineHeight: leading,
wordSpace: tracking, wordSpace: tracking,
vertical: isVertical, vertical: isVertical,
contentStr: content contentStr: content,
layerName:item.layer.name,
groupId :groupId
} }
if (textShadow) element.shadow = textShadow if (textShadow) element.shadow = textShadow
......
...@@ -209,10 +209,22 @@ const GetTripFiledData = async () =>{ ...@@ -209,10 +209,22 @@ const GetTripFiledData = async () =>{
} }
const travel = dataRes.data.data const travel = dataRes.data.data
const cursors = [] as Array<any> 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++) { for (let index = 0; index < slidesData.length; index++) {
const x = slidesData[index] as any; 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++) { 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){ if(y.TemplateDataSource && y.TemplateDataSource.Content){
let dataPath = y.TemplateDataSource.Content.split('.') let dataPath = y.TemplateDataSource.Content.split('.')
let value=JSON.parse(JSON.stringify(travel)); let value=JSON.parse(JSON.stringify(travel));
...@@ -286,6 +298,7 @@ const GetTripFiledData = async () =>{ ...@@ -286,6 +298,7 @@ const GetTripFiledData = async () =>{
} }
} }
} }
slidesStore.setSlides(slidesData) slidesStore.setSlides(slidesData)
} }
} catch (error) { } catch (error) {
...@@ -294,6 +307,43 @@ const GetTripFiledData = async () =>{ ...@@ -294,6 +307,43 @@ const GetTripFiledData = async () =>{
loadingObj.close() 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 () =>{ const GetTripTemplate = async () =>{
if(!searchData.value.TempId&&!TempId.value) { 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