|
@@ -70,9 +70,9 @@
|
|
|
time: null,
|
|
|
domain: '',
|
|
|
isAuto: false,
|
|
|
- questionId: '51748',
|
|
|
+ questionId: '52635',
|
|
|
imgUri: '',
|
|
|
- times: 1
|
|
|
+ times: 1,
|
|
|
}
|
|
|
// window.onload = function(){
|
|
|
new Vue({
|
|
@@ -85,7 +85,6 @@
|
|
|
// this.getData()
|
|
|
},
|
|
|
methods: {
|
|
|
-
|
|
|
convertImgToBase64(img) {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
let canvas = document.createElement('canvas');
|
|
@@ -120,23 +119,24 @@
|
|
|
canvasWrap.getContext('2d').scale(this.times, this.times)
|
|
|
return canvasWrap;
|
|
|
},
|
|
|
- waitingLoaingImg(cb) {
|
|
|
- let doms;
|
|
|
- const qs = document.querySelector('#qs');
|
|
|
- // 每次重置容器高度
|
|
|
- qs.style.height = 'auto';
|
|
|
- if (this.hasImg(qs)) {
|
|
|
- doms = qs?.children ?? [];
|
|
|
- } else {
|
|
|
- doms = qs.firstChild?.children ?? [];
|
|
|
- }
|
|
|
- const promiseArr = [];
|
|
|
- for (let i of doms) {
|
|
|
- if (i.nodeName === 'IMG') {
|
|
|
+ getUnderline(num) {
|
|
|
+ const underline = document.createElement('div');
|
|
|
+ // 暂定于1个空格5像素
|
|
|
+ underline.setAttribute('style', `width: ${num * 5}px;border-bottom: 1px solid #000000;display: inline-block;vertical-align: baseline;transform: translateY(2px);`);
|
|
|
+ return underline;
|
|
|
+ },
|
|
|
+ // 遍历所有子元素
|
|
|
+ findAllEle(promiseArr, parent) {
|
|
|
+ for (let i of parent.childNodes) {
|
|
|
+ if (i.nodeName === 'U') {
|
|
|
+ parent.insertBefore(this.getUnderline(i.innerText.length), i);
|
|
|
+ parent.removeChild(i);
|
|
|
+ } else if (i.nodeName === 'IMG') {
|
|
|
const promise = new Promise((resolve, reject) => {
|
|
|
i.onload = async (e) => {
|
|
|
// 如果图片存在浮动,需要手动设置容器的高度
|
|
|
if (i.style.float) {
|
|
|
+ const qs = document.querySelector('#qs');
|
|
|
qs.style.height = Math.max(qs.getBoundingClientRect().height, i.height) + 'px'
|
|
|
}
|
|
|
const { width, height } = qs.getBoundingClientRect();
|
|
@@ -150,7 +150,19 @@
|
|
|
});
|
|
|
promiseArr.push(promise);
|
|
|
}
|
|
|
+ if (i.hasChildNodes()) {
|
|
|
+ this.findAllEle(promiseArr, i);
|
|
|
+ }
|
|
|
}
|
|
|
+ },
|
|
|
+ waitingLoaingImg(cb) {
|
|
|
+ let doms;
|
|
|
+ let parent;
|
|
|
+ const qs = document.querySelector('#qs');
|
|
|
+ // 每次重置容器高度
|
|
|
+ qs.style.height = 'auto';
|
|
|
+ const promiseArr = [];
|
|
|
+ this.findAllEle(promiseArr, qs);
|
|
|
if (promiseArr.length === 0) {
|
|
|
const { width, height } = qs.getBoundingClientRect();
|
|
|
html2canvas(qs, {
|
|
@@ -234,7 +246,7 @@
|
|
|
if (this.isAuto) {
|
|
|
setTimeout(() => {
|
|
|
this.getData()
|
|
|
- }, 1000);
|
|
|
+ }, 2000);
|
|
|
}
|
|
|
if (type) {
|
|
|
this.$message({
|
|
@@ -289,7 +301,6 @@
|
|
|
}
|
|
|
this.questionId=this.data.questionId
|
|
|
const times = 2 // 图片放大倍数,能提升清晰度
|
|
|
-
|
|
|
let _this = this
|
|
|
_this.imgUri = ''
|
|
|
document.getElementById('qs').style.display = 'none'
|
|
@@ -301,16 +312,14 @@
|
|
|
}).then((canvas2) => {
|
|
|
document.getElementById('qs').style.display = 'block'
|
|
|
var canvas3 = document.createElement("canvas");
|
|
|
- canvas3.width = Math.max(canvas1?.width*times ?? 0, canvas2.width*times)
|
|
|
- canvas3.height = (canvas1?.height*times ?? 0) + (canvas2.width*times && canvas2.height*times ? canvas2.height*times : 0)
|
|
|
+ canvas3.width = Math.max(canvas1?.width ?? 0, canvas2.width)
|
|
|
+ canvas3.height = (canvas1?.height ?? 0) + (canvas2.width && canvas2.height ? canvas2.height : 0)
|
|
|
var ctx = canvas3.getContext("2d");
|
|
|
-// ctx.scale(times, times) ///缩放等级
|
|
|
-
|
|
|
- // 绘制题目
|
|
|
- canvas1 && ctx.drawImage(canvas1, 0, 0, canvas1.width*times, canvas1.height*times);
|
|
|
+ // 绘制题目
|
|
|
+ canvas1 && ctx.drawImage(canvas1, 0, 0, canvas1.width, canvas1.height);
|
|
|
if (canvas2.width && canvas2.height) {
|
|
|
// 绘制答案
|
|
|
- ctx.drawImage(canvas2, 0, canvas1?.height*times ?? 0, canvas2.width*times, canvas2.height*times);
|
|
|
+ ctx.drawImage(canvas2, 0, canvas1?.height ?? 0, canvas2.width, canvas2.height);
|
|
|
}
|
|
|
_this.imgUri = canvas3.toDataURL('image/png')
|
|
|
canvas1 = null
|