|
@@ -24,12 +24,14 @@
|
|
|
<div v-if="modalIsShow" class="area-container">
|
|
|
<area-cropper
|
|
|
v-for="(paper, index) in papers"
|
|
|
+ :id="`area-cropper-${index}`"
|
|
|
:imgUrl="paper.imgUrl"
|
|
|
ref="AreaCropper"
|
|
|
:key="paper.imgUrl"
|
|
|
:paper="paper"
|
|
|
@curarea-change="cropperCurareaChange"
|
|
|
@change="(areas) => areaChange(index, areas)"
|
|
|
+ @paper-load="() => areaPaperLoaded(index)"
|
|
|
></area-cropper>
|
|
|
</div>
|
|
|
|
|
@@ -67,10 +69,12 @@ export default {
|
|
|
return {
|
|
|
modalIsShow: false,
|
|
|
papers: [],
|
|
|
+ paperLoadedList: [],
|
|
|
};
|
|
|
},
|
|
|
methods: {
|
|
|
visibleChange() {
|
|
|
+ this.paperLoadedList = [];
|
|
|
this.papers = this.paperList.map((paper) => {
|
|
|
let npaper = { ...paper };
|
|
|
npaper.areas = [];
|
|
@@ -81,6 +85,39 @@ export default {
|
|
|
this.papers[index].areas.push({ ...config });
|
|
|
});
|
|
|
},
|
|
|
+ areaPaperLoaded(paperIndex) {
|
|
|
+ if (this.paperLoadedList.includes(paperIndex)) return;
|
|
|
+ this.paperLoadedList.push(paperIndex);
|
|
|
+ if (this.paperLoadedList.length === this.paperList.length) {
|
|
|
+ this.scrollToFirstArea();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ scrollToFirstArea() {
|
|
|
+ if (!this.group.pictureConfigList.length) return;
|
|
|
+ let paperIndexs = this.group.pictureConfigList.map((item) => item.i - 1);
|
|
|
+ paperIndexs.sort((a, b) => a - b);
|
|
|
+ const firstPaperIndex = paperIndexs[0];
|
|
|
+
|
|
|
+ this.$nextTick(() => {
|
|
|
+ const areaCropperDom = document.getElementById(
|
|
|
+ `area-cropper-${firstPaperIndex}`
|
|
|
+ );
|
|
|
+ let areaItems = areaCropperDom.querySelectorAll(".element-resize");
|
|
|
+ let firstAreaItem = null;
|
|
|
+ let topNum = 9999;
|
|
|
+ for (let i = 0; i < areaItems.length; i++) {
|
|
|
+ const element = areaItems[i];
|
|
|
+ if (element.offsetTop < topNum) {
|
|
|
+ topNum = element.offsetTop;
|
|
|
+ firstAreaItem = element;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // console.log(firstAreaItem);
|
|
|
+ const scrollTop =
|
|
|
+ areaCropperDom.offsetTop + firstAreaItem.offsetTop - 100;
|
|
|
+ this.$el.querySelector(".el-dialog").scrollTop = scrollTop;
|
|
|
+ });
|
|
|
+ },
|
|
|
cancel() {
|
|
|
this.modalIsShow = false;
|
|
|
},
|