Commit 6bb2b3e8e027ebe7ec8927d8b33ca362b7bf5578
1 parent
2fd57d1f
feat:打印调整
Showing
2 changed files
with
32 additions
and
40 deletions
src/utils/index.js
... | ... | @@ -614,15 +614,14 @@ export function getBlob(url) { |
614 | 614 | }); |
615 | 615 | } |
616 | 616 | export function fetchHTML(url) { |
617 | - return new Promise((resolve) => { | |
618 | - resolve( | |
619 | - service({ | |
620 | - url: url, | |
621 | - withCredentials: false, | |
622 | - method: "get" | |
623 | - }) | |
624 | - ); | |
625 | - }); | |
617 | + var xhr = new XMLHttpRequest(); | |
618 | + xhr.open("GET", url, false); | |
619 | + xhr.send(); | |
620 | + if (xhr.status === 200) { | |
621 | + return xhr.responseText; | |
622 | + } else { | |
623 | + return null; | |
624 | + } | |
626 | 625 | } |
627 | 626 | /** |
628 | 627 | * 打包压缩下载 |
... | ... | @@ -884,8 +883,8 @@ export function formatGradeNameClass(data) { |
884 | 883 | } |
885 | 884 | |
886 | 885 | ///试卷定制化打印 |
887 | -export async function paperPrint(paper) { | |
888 | - let printWin = window.open("", "_blank", ""); | |
886 | +export function paperPrint(paper) { | |
887 | + let printWin = window.open(undefined, "_blank", ""); | |
889 | 888 | var browser = getBrowserEngine(printWin); |
890 | 889 | var subjectName = paper.subjectName; |
891 | 890 | var paperTitle = paper.title; |
... | ... | @@ -911,7 +910,7 @@ export async function paperPrint(paper) { |
911 | 910 | } |
912 | 911 | return "Blink"; // Assume it's Chrome, Safari, or an alternative Blink-based browser |
913 | 912 | } |
914 | - function windowPrint(windowParams) { | |
913 | + function windowPrint(windowParams) { | |
915 | 914 | windowParams.print(); |
916 | 915 | windowParams.close(); |
917 | 916 | } |
... | ... | @@ -1171,7 +1170,7 @@ export async function paperPrint(paper) { |
1171 | 1170 | |
1172 | 1171 | const questionDom = printWin.document.createElement('div'); |
1173 | 1172 | var subItem = item.subQuestions[idof]; |
1174 | - var screenshotHtml = await fetchHTML(subItem.screenshot); | |
1173 | + var screenshotHtml = fetchHTML(subItem.screenshot); | |
1175 | 1174 | var getStyleScripts = iof == 0 && idof == 0; |
1176 | 1175 | var screenshotObject = htmlParseDom(screenshotHtml, getStyleScripts); |
1177 | 1176 | var screenshotDoms = screenshotObject.doms; |
... | ... | @@ -1199,16 +1198,10 @@ export async function paperPrint(paper) { |
1199 | 1198 | tableDom.appendChild(tfootDom); |
1200 | 1199 | printWin.document.body.appendChild(bodyBoxDom); |
1201 | 1200 | // generatePageParams(); |
1202 | - const iamges = printWin.document.querySelectorAll('img'); | |
1203 | - if (iamges.length >= 1) { | |
1204 | - var lastImage = iamges[iamges.length - 1]; | |
1205 | - if (lastImage.complete) { | |
1206 | - windowPrint(printWin); | |
1207 | - } else { | |
1208 | - lastImage.onload = function () { | |
1209 | - windowPrint(printWin); | |
1210 | - } | |
1211 | - } | |
1201 | + const lastImage = printWin.document.querySelector('img:last-child'); | |
1202 | + if (lastImage) { | |
1203 | + if (lastImage.complete) windowPrint(printWin); | |
1204 | + lastImage.onload = () => windowPrint(printWin); | |
1212 | 1205 | } else { |
1213 | 1206 | windowPrint(printWin); |
1214 | 1207 | } | ... | ... |
src/views/basic/askTestQuestion/index.vue
... | ... | @@ -18,11 +18,11 @@ |
18 | 18 | <el-input v-model="query.paper" :placeholder="dataType == '1' ? '搜索课件' : '搜索试卷'" |
19 | 19 | suffix-icon="el-icon-search" class="filter-input" clearable /> |
20 | 20 | <el-select @change="_changeClass" v-model="query.class" class="filter-select" placeholder="选择班级"> |
21 | - <el-option v-for="item in classList" :key="item.classId" :label="item.className" | |
21 | + <el-option v-for="item in classList" :key="item.classId" :label="item.className" | |
22 | 22 | :value="item.classId" /> |
23 | 23 | </el-select> |
24 | 24 | <el-select v-model="query.subject" placeholder="选择科目" class="filter-select"> |
25 | - <el-option v-for=" item in subjectList " :key="item" :label="item" :value="item" /> | |
25 | + <el-option v-for=" item in subjectList " :key="item" :label="item" :value="item" /> | |
26 | 26 | </el-select> |
27 | 27 | <el-select v-if="dataType == '2'" v-model="query.tagId" placeholder="选择测验类型" class="filter-select"> |
28 | 28 | <el-option v-for="item in typeList" :key="item.label" :label="item.label" :value="item.value" /> |
... | ... | @@ -70,9 +70,9 @@ |
70 | 70 | <el-dropdown-menu slot="dropdown"> |
71 | 71 | <el-dropdown-item |
72 | 72 | @click.native="_detailQ(item.id)">查看</el-dropdown-item> |
73 | - <el-dropdown-item v-if="dataType != 1" | |
74 | - @click.native="_print(item)">打印</el-dropdown-item> | |
75 | - <el-dropdown-item @click.native="_updateQ(item)">修改</el-dropdown-item> | |
73 | + <el-dropdown-item v-if="dataType != 1" | |
74 | + @click.native="_print(item)">打印</el-dropdown-item> | |
75 | + <el-dropdown-item @click.native="_updateQ(item)">修改</el-dropdown-item> | |
76 | 76 | <el-dropdown-item @click.native="_copy(item)">复制</el-dropdown-item> |
77 | 77 | <el-dropdown-item> |
78 | 78 | <el-popconfirm style="color:gray !important;" |
... | ... | @@ -92,7 +92,7 @@ |
92 | 92 | <span class="descption-label"> 授课端同步:</span> |
93 | 93 | <div class="descption-box"> |
94 | 94 | <span class="descption-tag" |
95 | - v-for="( clazzChild, indexs ) in item.classList " | |
95 | + v-for="( clazzChild, indexs ) in item.classList " | |
96 | 96 | :key="clazzChild.classId" |
97 | 97 | :class="clazzChild.keepStatus == 1 ? 'active' : ''"> |
98 | 98 | {{ clazzChild.className }} |
... | ... | @@ -198,7 +198,7 @@ |
198 | 198 | <span class="descption-label"> 授课端同步:</span> |
199 | 199 | <div class="descption-box"> |
200 | 200 | <span class="descption-tag" |
201 | - v-for="( clazzChild, indexs ) in item.classList " | |
201 | + v-for="( clazzChild, indexs ) in item.classList " | |
202 | 202 | :key="clazzChild.classId" |
203 | 203 | :class="clazzChild.keepStatus == 1 ? 'active' : ''"> |
204 | 204 | {{ clazzChild.className }} |
... | ... | @@ -649,17 +649,16 @@ export default { |
649 | 649 | _delete() { |
650 | 650 | |
651 | 651 | }, |
652 | - async _print(item){ | |
652 | + _print(item) { | |
653 | 653 | this.$loading.open(); |
654 | - const { data, status, info } = await this.$request.tPaperDetail({ | |
655 | - paperId: item.id | |
656 | - }); | |
657 | - this.$loading.close(); | |
658 | - if (status != 0) { | |
659 | - this.$message.error(info); | |
660 | - return; | |
661 | - } | |
662 | - await paperPrint(data); | |
654 | + this.$request.tPaperDetail({ paperId: item.id }).then(({ data, status, info }) => { | |
655 | + if (status != 0) { | |
656 | + this.$message.error(info); | |
657 | + return; | |
658 | + } | |
659 | + paperPrint(data); | |
660 | + this.$loading.close(); | |
661 | + }) | |
663 | 662 | }, |
664 | 663 | _updateQ(item) { |
665 | 664 | ... | ... |