diff --git a/src/editor/core/draw/Draw.ts b/src/editor/core/draw/Draw.ts index d2ce1fb..82e4508 100644 --- a/src/editor/core/draw/Draw.ts +++ b/src/editor/core/draw/Draw.ts @@ -1903,7 +1903,9 @@ export class Draw { const floatPosition = floatPositionList[e] const element = floatPosition.element if ( - pageNo === floatPosition.pageNo && + (pageNo === floatPosition.pageNo || + floatPosition.zone === EditorZone.HEADER || + floatPosition.zone == EditorZone.FOOTER) && element.imgDisplay === imgDisplay && element.type === ElementType.IMAGE ) { @@ -2044,6 +2046,8 @@ export class Draw { const isPagingMode = this.getIsPagingMode() // 计算文档信息 if (isCompute) { + // 清空浮动元素位置信息 + this.position.setFloatPositionList([]) if (isPagingMode) { // 页眉信息 if (!header.disabled) { diff --git a/src/editor/core/draw/frame/Footer.ts b/src/editor/core/draw/frame/Footer.ts index e5fbb7a..c41c025 100644 --- a/src/editor/core/draw/frame/Footer.ts +++ b/src/editor/core/draw/frame/Footer.ts @@ -75,7 +75,8 @@ export class Footer { startIndex: 0, startX, startY, - innerWidth + innerWidth, + zone: EditorZone.FOOTER }) } diff --git a/src/editor/core/draw/frame/Header.ts b/src/editor/core/draw/frame/Header.ts index 3dd5deb..1e1843a 100644 --- a/src/editor/core/draw/frame/Header.ts +++ b/src/editor/core/draw/frame/Header.ts @@ -72,7 +72,8 @@ export class Header { startIndex: 0, startX, startY, - innerWidth + innerWidth, + zone: EditorZone.HEADER }) } diff --git a/src/editor/core/position/Position.ts b/src/editor/core/position/Position.ts index ce71143..afb1580 100644 --- a/src/editor/core/position/Position.ts +++ b/src/editor/core/position/Position.ts @@ -96,6 +96,10 @@ export class Position { this.positionList = payload } + public setFloatPositionList(payload: IFloatPosition[]) { + this.floatPositionList = payload + } + public computePageRowPosition( payload: IComputePageRowPositionPayload ): IComputePageRowPositionResult { @@ -107,7 +111,8 @@ export class Position { startY, startRowIndex, startIndex, - innerWidth + innerWidth, + zone } = payload const { scale, tdPadding } = this.options let x = startX @@ -177,7 +182,8 @@ export class Position { index: payload.index, tdIndex: payload.tdIndex, trIndex: payload.trIndex, - tdValueIndex: index + tdValueIndex: index, + zone }) } positionList.push(positionItem) @@ -205,7 +211,8 @@ export class Position { isTable: true, index: index - 1, tdIndex: d, - trIndex: t + trIndex: t, + zone }) // 垂直对齐方式 if ( @@ -252,7 +259,6 @@ export class Position { public computePositionList() { // 置空原位置信息 this.positionList = [] - this.floatPositionList = [] // 按每页行计算 const innerWidth = this.draw.getInnerWidth() const pageRowList = this.draw.getPageRowList() @@ -550,6 +556,7 @@ export class Position { payload: IGetFloatPositionByXYPayload ): ICurrentPosition | void { const { x, y } = payload + const currentZone = this.draw.getZone().getZone() for (let f = 0; f < this.floatPositionList.length; f++) { const { position, @@ -558,11 +565,13 @@ export class Position { index, trIndex, tdIndex, - tdValueIndex + tdValueIndex, + zone: floatElementZone } = this.floatPositionList[f] if ( element.type === ElementType.IMAGE && - element.imgDisplay === payload.imgDisplay + element.imgDisplay === payload.imgDisplay && + (!floatElementZone || floatElementZone === currentZone) ) { const imgFloatPosition = element.imgFloatPosition! if ( diff --git a/src/editor/interface/Position.ts b/src/editor/interface/Position.ts index 8af10f6..7033b7f 100644 --- a/src/editor/interface/Position.ts +++ b/src/editor/interface/Position.ts @@ -69,6 +69,7 @@ export interface IComputePageRowPositionPayload { tdIndex?: number trIndex?: number tdValueIndex?: number + zone?: EditorZone } export interface IComputePageRowPositionResult { @@ -86,4 +87,5 @@ export interface IFloatPosition { tdIndex?: number trIndex?: number tdValueIndex?: number + zone?: EditorZone }