|
@@ -74,7 +74,7 @@
|
|
</div> -->
|
|
</div> -->
|
|
</div>
|
|
</div>
|
|
|
|
|
|
- <div class="design-main">
|
|
|
|
|
|
+ <div id="design-main" class="design-main">
|
|
<!-- menus -->
|
|
<!-- menus -->
|
|
<div class="design-control">
|
|
<div class="design-control">
|
|
<div class="control-left tab-btns">
|
|
<div class="control-left tab-btns">
|
|
@@ -112,18 +112,20 @@
|
|
<div class="design-body">
|
|
<div class="design-body">
|
|
<!-- 注意:后台要替换内容,改类名时,要注意 -->
|
|
<!-- 注意:后台要替换内容,改类名时,要注意 -->
|
|
<div
|
|
<div
|
|
|
|
+ v-for="(page, pageNo) in pages"
|
|
|
|
+ :key="pageNo"
|
|
|
|
+ :id="`edit-page-box-${pageNo}`"
|
|
:class="[
|
|
:class="[
|
|
'page-box',
|
|
'page-box',
|
|
`page-box-${cardConfig.pageSize}`,
|
|
`page-box-${cardConfig.pageSize}`,
|
|
- `page-box-${curPageNo % 2}`,
|
|
|
|
|
|
+ `page-box-${pageNo % 2}`,
|
|
{ 'page-box-less': pages.length <= 2 },
|
|
{ 'page-box-less': pages.length <= 2 },
|
|
]"
|
|
]"
|
|
- v-if="curPage.locators"
|
|
|
|
>
|
|
>
|
|
<!-- locator -->
|
|
<!-- locator -->
|
|
<div class="page-locator page-locator-top">
|
|
<div class="page-locator page-locator-top">
|
|
<div
|
|
<div
|
|
- v-for="elem in curPage.locators.top"
|
|
|
|
|
|
+ v-for="elem in page.locators.top"
|
|
:key="elem.id"
|
|
:key="elem.id"
|
|
:id="elem.id"
|
|
:id="elem.id"
|
|
class="page-locator-item"
|
|
class="page-locator-item"
|
|
@@ -131,7 +133,7 @@
|
|
</div>
|
|
</div>
|
|
<div class="page-locator page-locator-bottom">
|
|
<div class="page-locator page-locator-bottom">
|
|
<div
|
|
<div
|
|
- v-for="elem in curPage.locators.bottom"
|
|
|
|
|
|
+ v-for="elem in page.locators.bottom"
|
|
:key="elem.id"
|
|
:key="elem.id"
|
|
:id="elem.id"
|
|
:id="elem.id"
|
|
class="page-locator-item"
|
|
class="page-locator-item"
|
|
@@ -140,18 +142,18 @@
|
|
<!-- inner edit area -->
|
|
<!-- inner edit area -->
|
|
<div class="page-main-inner">
|
|
<div class="page-main-inner">
|
|
<div
|
|
<div
|
|
- :class="['page-main', `page-main-${curPage.columns.length}`]"
|
|
|
|
- :style="{ margin: `0 -${curPage.columnGap / 2}px` }"
|
|
|
|
|
|
+ :class="['page-main', `page-main-${page.columns.length}`]"
|
|
|
|
+ :style="{ margin: `0 -${page.columnGap / 2}px` }"
|
|
>
|
|
>
|
|
<div
|
|
<div
|
|
class="page-column"
|
|
class="page-column"
|
|
- v-for="(column, columnNo) in curPage.columns"
|
|
|
|
|
|
+ v-for="(column, columnNo) in page.columns"
|
|
:key="columnNo"
|
|
:key="columnNo"
|
|
- :style="{ padding: `0 ${curPage.columnGap / 2}px` }"
|
|
|
|
|
|
+ :style="{ padding: `0 ${page.columnGap / 2}px` }"
|
|
>
|
|
>
|
|
<div
|
|
<div
|
|
class="page-column-main"
|
|
class="page-column-main"
|
|
- :id="[`column-${curPageNo}-${columnNo}`]"
|
|
|
|
|
|
+ :id="[`column-${pageNo}-${columnNo}`]"
|
|
>
|
|
>
|
|
<div class="page-column-body" v-if="column.elements.length">
|
|
<div class="page-column-body" v-if="column.elements.length">
|
|
<topic-element-edit
|
|
<topic-element-edit
|
|
@@ -179,12 +181,12 @@
|
|
<page-number
|
|
<page-number
|
|
type="rect"
|
|
type="rect"
|
|
:total="pages.length"
|
|
:total="pages.length"
|
|
- :current="curPageNo + 1"
|
|
|
|
|
|
+ :current="pageNo + 1"
|
|
></page-number>
|
|
></page-number>
|
|
<page-number
|
|
<page-number
|
|
type="text"
|
|
type="text"
|
|
:total="pages.length"
|
|
:total="pages.length"
|
|
- :current="curPageNo + 1"
|
|
|
|
|
|
+ :current="pageNo + 1"
|
|
></page-number>
|
|
></page-number>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -363,6 +365,10 @@ export default {
|
|
this.initPageData();
|
|
this.initPageData();
|
|
}
|
|
}
|
|
this.addWatch();
|
|
this.addWatch();
|
|
|
|
+
|
|
|
|
+ this.$nextTick(() => {
|
|
|
|
+ this.registSrollEvent();
|
|
|
|
+ });
|
|
},
|
|
},
|
|
initPageData() {
|
|
initPageData() {
|
|
this.modifyCardHead({
|
|
this.modifyCardHead({
|
|
@@ -406,11 +412,38 @@ export default {
|
|
});
|
|
});
|
|
});
|
|
});
|
|
},
|
|
},
|
|
|
|
+ // 页面切换
|
|
swithPage(pindex) {
|
|
swithPage(pindex) {
|
|
if (this.curPageNo === pindex) return;
|
|
if (this.curPageNo === pindex) return;
|
|
|
|
+ let pageTops = this.pages.map((page, pageNo) => {
|
|
|
|
+ return document.getElementById(`edit-page-box-${pageNo}`).offsetTop;
|
|
|
|
+ });
|
|
|
|
+ pageTops = pageTops.map((item) => item - pageTops[0]);
|
|
|
|
+ document.getElementById("design-main").scrollTop = pageTops[pindex];
|
|
this.setCurPage(pindex);
|
|
this.setCurPage(pindex);
|
|
this.setCurElement({});
|
|
this.setCurElement({});
|
|
},
|
|
},
|
|
|
|
+ registSrollEvent() {
|
|
|
|
+ document.getElementById("design-main").addEventListener("scroll", (e) => {
|
|
|
|
+ e.preventDefault();
|
|
|
|
+ e.stopPropagation();
|
|
|
|
+ let pageTops = this.pages.map((page, pageNo) => {
|
|
|
|
+ return document.getElementById(`edit-page-box-${pageNo}`).offsetTop;
|
|
|
|
+ });
|
|
|
|
+ const pageRangeHeight =
|
|
|
|
+ document.getElementById(`edit-page-box-0`).offsetHeight * 0.2;
|
|
|
|
+ pageTops = pageTops.map((item) => item - pageTops[0] - pageRangeHeight);
|
|
|
|
+ const scrollTop = e.target.scrollTop;
|
|
|
|
+ // console.log(pageTops, scrollTop);
|
|
|
|
+ const targePageTop = pageTops.find((item) => scrollTop < item);
|
|
|
|
+ const pageNo = targePageTop
|
|
|
|
+ ? pageTops.indexOf(targePageTop) - 1
|
|
|
|
+ : pageTops.length - 1;
|
|
|
|
+
|
|
|
|
+ if (this.curPageNo === pageNo) return;
|
|
|
|
+ this.setCurPage(pageNo);
|
|
|
|
+ });
|
|
|
|
+ },
|
|
// paper-params
|
|
// paper-params
|
|
modifyParams() {
|
|
modifyParams() {
|
|
this.$refs.PaperParams.open();
|
|
this.$refs.PaperParams.open();
|