From 63d9a9c62fd34f4b48a157e0bc57dd82ee09a197 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期四, 27 十一月 2025 17:36:12 +0800
Subject: [PATCH] 2025.11.27
---
src/views/fysp/scene/SceneInspectFile.vue | 145 +++++++++++++++++++++++++-----------------------
1 files changed, 76 insertions(+), 69 deletions(-)
diff --git a/src/views/fysp/scene/SceneInspectFile.vue b/src/views/fysp/scene/SceneInspectFile.vue
index e59d32a..7bec485 100644
--- a/src/views/fysp/scene/SceneInspectFile.vue
+++ b/src/views/fysp/scene/SceneInspectFile.vue
@@ -2,7 +2,7 @@
<el-dialog
:model-value="modelValue"
@update:model-value="handleDialogChange"
- title="宸℃煡鍗曟嵁涓嬭浇"
+ title="宸℃煡鍗曟嵁涓嬭浇鎵撳嵃"
class="dialog-wrapper"
v-loading="loading"
>
@@ -43,9 +43,9 @@
type="default"
size="small"
class="m-t-4"
+ icon="IconPrinter"
@click="handlePreview(item)"
>
- 棰勮
</el-button>
</el-row>
</el-checkbox>
@@ -54,17 +54,33 @@
</el-scrollbar>
<template #footer>
<div class="dialog-footer">
- <el-button type="danger" @click="cancel">鍙栨秷</el-button>
- <el-button type="primary" :loading="docLoading" @click="handelDownload">
- 涓嬭浇
+ <el-button type="danger" @click="cancel" icon="CloseBold"
+ >鍙栨秷</el-button
+ >
+ <el-button
+ type="primary"
+ :loading="docLoading"
+ icon="Download"
+ :disabled="checkList.length == 0"
+ @click="handelDownload"
+ >
+ 涓嬭浇鎵�閫�
</el-button>
- <el-button type="default" :loading="docLoading" @click="handelPrint">
- 鎵撳嵃
+ <el-button
+ type="default"
+ :loading="docLoading"
+ :disabled="checkList.length == 0"
+ @click="handlePreview()"
+ icon="IconPrinter"
+ >
+ <el-space>
+ 鎵撳嵃鎵�閫�
+ </el-space>
</el-button>
</div>
</template>
</el-dialog>
- <el-dialog v-model="previewVisible" :show-close="true" fullscreen>
+ <el-dialog v-model="previewVisible" :show-close="false" fullscreen>
<template #header="{ close, titleId, titleClass }">
<el-row justify="end">
<el-button type="danger" @click="close" icon="CircleCloseFilled">
@@ -73,14 +89,18 @@
<el-button
type="primary"
@click="handelPrint(refWord)"
- icon="PrintFilled"
+ icon="IconPrinter"
>
鎵撳嵃
</el-button>
</el-row>
</template>
<div ref="refWord">
-
+ <div
+ :id="`word-preview-${i}`"
+ v-for="(item, i) in previewList"
+ :key="item"
+ ></div>
</div>
<!-- <iframe ref="pdfPreview" width="100%" height="100vh" style="height: calc(100vh - 60px);"></iframe> -->
</el-dialog>
@@ -90,7 +110,7 @@
* 鍦烘櫙宸℃煡鍗曟嵁鑷姩涓嬭浇
*/
import { ref, watch } from 'vue';
-import { useRouter } from "vue-router";
+import { useRouter } from 'vue-router';
import {
exportDocx,
prepareDocxBlob,
@@ -124,6 +144,8 @@
// 棰勮瀵硅瘽妗嗗紑鍏�
const previewVisible = ref(false);
+// 棰勮鐨勬枃妗�
+const previewList = ref([]);
watch(
() => [props.modelValue, props.value],
@@ -236,7 +258,7 @@
// 鏍规嵁鍦烘櫙绫诲瀷锛岀敓鎴愬搴旂殑word鏂囨。
function generateDoc(param, callback) {
- param.map((p) => {
+ param.map((p, index) => {
let template, _param;
switch (p.type) {
// 宸ュ湴
@@ -253,30 +275,7 @@
break;
}
prepareDocxBlob(template, _param).then((blob) => {
- callback(blob, `${_param.name}宸℃煡鍗曟嵁.docx`);
- });
- });
-}
-
-function generatePdf(param, callback) {
- param.map((p) => {
- let template, _param;
- switch (p.type) {
- // 宸ュ湴
- case 1:
- template = '/宸ュ湴宸℃煡鍗曟嵁妯℃澘-绠�鐗�.docx';
- _param = p.params;
- break;
- // 椁愰ギ
- case 5:
- template = '/椁愰ギ宸℃煡鍗曟嵁妯℃澘.docx';
- _param = p.params;
- break;
- default:
- break;
- }
- preparePdf(template, _param).then((blob) => {
- callback(blob, `${_param.name}宸℃煡鍗曟嵁.pdf`);
+ callback(blob, `${_param.name}宸℃煡鍗曟嵁.docx`, index);
});
});
}
@@ -298,47 +297,36 @@
// 鐐瑰嚮鎵撳嵃鎸夐挳鎿嶄綔
function handelPrint(ref) {
if (ref) {
- print(ref);
+ print({
+ ref,
+ // 鏍规嵁鐩墠浣跨敤鐨刣ocx-preview缁勪欢锛岃缃墦鍗版牱寮忥紝涓昏鍘婚櫎澶氫綑鐨刴argin鍜宲adding锛屼互鍙婇槾褰辨晥鏋�
+ style: `
+ @page{size:A4;margin: 0 !important;padding:0 !important;}
+ body {margin: 0 !important;padding:0 !important;}
+ header {color: rgb(182, 182, 182);}
+ footer {color: rgb(182, 182, 182);}
+ .docx-wrapper {padding: 0 !important;}
+ .docx {margin-bottom: 0 !important; box-shadow: none !important;}
+ .docx_5 {
+ display: flex;
+ justify-content: space-between;
+ align-items: flex-end;
+ }
+ `
+ });
}
- // const file = filePrepare();
- // if (file) {
- // previewDocx(file.blob, refWord.value);
- // }
}
function handlePreview(item) {
- const param = parseParam(item);
+ // 棰勮鐨勬枃妗o紝鍖哄垎鍗曠嫭鎵撳嵃鍜屾墦鍗板叏閮�
+ previewList.value = item ? ['0'] : checkList.value;
+ const param = item ? parseParam(item) : parseParam();
if (param) {
- generatePdf(param, (blob, name) => {
+ generateDoc(param, (blob, name, index) => {
previewVisible.value = true;
setTimeout(() => {
- previewDocx(blob, refWord.value);
+ previewDocx(blob, document.getElementById(`word-preview-${index}`));
}, 200);
- // blob.print()
- // blob.getBlob((buffer) => {
- // previewDocx(buffer, refWord.value);
- // });
-
- // const resolved = router.resolve({
- // path: '/fysp/scene/SceneInspectFile',
- // query: {
- // data: JSON.stringify(blob),
- // }
- // });
- // window.open(resolved.href, '_blank')
-
-
- // console.log('pdf', blob);
-
- // blob.autoPrint();
- // // blob.save(name)
- // // 鐢熸垚PDF鐨凚lob瀵硅薄
- // var pdfBlob = blob.output('blob');
-
- // setTimeout(() => {
- // // 鍦╥frame涓樉绀洪瑙�
- // pdfPreview.value.src = URL.createObjectURL(pdfBlob);
- // }, 200);
});
}
}
@@ -363,4 +351,23 @@
:deep(.el-checkbox__label) {
width: 100%;
}
+
+/* 鏂囨。瀛椾綋 */
+:deep(section.docx) {
+ font-family: '榛戜綋' !important;
+}
+/* 鏂囨。鏍囬 */
+:deep(header) {
+ color: rgb(182, 182, 182);
+}
+:deep(.docx_5) {
+ display: flex;
+ justify-content: space-between;
+ align-items: flex-end;
+}
+
+/* */
+:deep(footer) {
+ color: rgb(182, 182, 182);
+}
</style>
--
Gitblit v1.9.3