|
@@ -452,6 +452,7 @@ export default {
|
|
|
},
|
|
|
buildReleasePages() {
|
|
|
this.resetRenderStructSize();
|
|
|
+ // console.log(this.renderStructList);
|
|
|
this.buildPageAutoPage();
|
|
|
},
|
|
|
resetRenderStructSize() {
|
|
@@ -511,74 +512,84 @@ export default {
|
|
|
curColumnNo = 0,
|
|
|
curColumnHeight = 0;
|
|
|
let curLinePercent = 0;
|
|
|
+ let groups = [],
|
|
|
+ curGroup = [];
|
|
|
|
|
|
+ // 分组自动分页 选项分组
|
|
|
const getNextElem = () => {
|
|
|
return this.renderStructList.shift();
|
|
|
};
|
|
|
|
|
|
curElem = getNextElem();
|
|
|
while (curElem) {
|
|
|
- if (!curPage) {
|
|
|
- curPage = this.getNewPageModel(pages.length);
|
|
|
- }
|
|
|
-
|
|
|
- if (!curColumn) {
|
|
|
- curColumn = curPage.columns[curColumnNo++];
|
|
|
- curColumnHeight = this.calcInitColumnHeight(curColumn);
|
|
|
- }
|
|
|
-
|
|
|
if (
|
|
|
curElem.contType !== "option" ||
|
|
|
(curElem.contType === "option" && curElem._percent === 1)
|
|
|
) {
|
|
|
- // 非选项,单独占整行
|
|
|
- curLinePercent = 1;
|
|
|
- if (curElem.h + curColumnHeight > this.maxColumnHeight) {
|
|
|
- // 当前栏满了
|
|
|
- if (curColumnNo >= curPage.columnNumber) {
|
|
|
- // 当前页满了
|
|
|
- pages.push(curPage);
|
|
|
- curPage = null;
|
|
|
- curColumnNo = null;
|
|
|
- }
|
|
|
- curColumn = null;
|
|
|
- curColumnHeight = 0;
|
|
|
- } else {
|
|
|
- // 当前栏未满
|
|
|
- curColumnHeight += curElem.h;
|
|
|
- curColumn.texts.push(curElem);
|
|
|
- curElem = getNextElem();
|
|
|
+ if (curGroup.length) {
|
|
|
+ groups.push(curGroup);
|
|
|
+ curGroup = [];
|
|
|
+ curLinePercent = 0;
|
|
|
}
|
|
|
+
|
|
|
+ groups.push([curElem]);
|
|
|
+ curElem = getNextElem();
|
|
|
} else {
|
|
|
- // 选项的处理
|
|
|
if (curLinePercent + curElem._percent > 1) {
|
|
|
- // 行满了,放下一行
|
|
|
- if (curElem.h + curColumnHeight > this.maxColumnHeight) {
|
|
|
- curLinePercent = 1;
|
|
|
- // 当前栏满了
|
|
|
- if (curColumnNo >= curPage.columnNumber) {
|
|
|
- // 当前页满了
|
|
|
- pages.push(curPage);
|
|
|
- curPage = null;
|
|
|
- curColumnNo = null;
|
|
|
- }
|
|
|
- curColumn = null;
|
|
|
- curColumnHeight = 0;
|
|
|
- } else {
|
|
|
- // 当前栏未满,放下一行
|
|
|
- curLinePercent = curElem._percent;
|
|
|
- curColumnHeight += curElem.h;
|
|
|
- curColumn.texts.push(curElem);
|
|
|
- curElem = getNextElem();
|
|
|
- }
|
|
|
+ groups.push(curGroup);
|
|
|
+ curGroup = [];
|
|
|
+ curLinePercent = 0;
|
|
|
} else {
|
|
|
- // 行未满,放当前行
|
|
|
+ curGroup.push(curElem);
|
|
|
curLinePercent += curElem._percent;
|
|
|
- curColumn.texts.push(curElem);
|
|
|
curElem = getNextElem();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ if (curGroup.length) {
|
|
|
+ groups.push(curGroup);
|
|
|
+ curGroup = [];
|
|
|
+ }
|
|
|
+
|
|
|
+ const getNextGroup = () => {
|
|
|
+ return groups.shift();
|
|
|
+ };
|
|
|
+ curGroup = getNextGroup();
|
|
|
+ while (curGroup) {
|
|
|
+ if (!curPage) {
|
|
|
+ curPage = this.getNewPageModel(pages.length);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!curColumn) {
|
|
|
+ curColumn = curPage.columns[curColumnNo++];
|
|
|
+ curColumnHeight = this.calcInitColumnHeight(curColumn);
|
|
|
+ }
|
|
|
+
|
|
|
+ let curGroupHeigth =
|
|
|
+ groups.length === 1
|
|
|
+ ? curGroup[0].h
|
|
|
+ : Math.max.apply(
|
|
|
+ null,
|
|
|
+ curGroup.map((item) => item.h)
|
|
|
+ );
|
|
|
+
|
|
|
+ if (curGroupHeigth + curColumnHeight > this.maxColumnHeight) {
|
|
|
+ // 当前栏满了
|
|
|
+ if (curColumnNo >= curPage.columnNumber) {
|
|
|
+ // 当前页满了
|
|
|
+ pages.push(curPage);
|
|
|
+ curPage = null;
|
|
|
+ curColumnNo = null;
|
|
|
+ }
|
|
|
+ curColumn = null;
|
|
|
+ curColumnHeight = 0;
|
|
|
+ } else {
|
|
|
+ // 当前栏未满
|
|
|
+ curColumnHeight += curGroupHeigth;
|
|
|
+ curColumn.texts.push(...curGroup);
|
|
|
+ curGroup = getNextGroup();
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
if (curPage) {
|
|
|
pages.push(curPage);
|