From 451e3f33886330349a408f7416ee7dbbb99218bf Mon Sep 17 00:00:00 2001 From: ysn <2126564605@qq.com> Date: Fri, 5 Jun 2026 15:43:14 +0800 Subject: [PATCH] =?UTF-8?q?=E7=97=85=E4=BE=8B=E5=BA=93-=E6=96=B0=E5=A2=9E/?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A2=84=E8=A7=88=E6=97=B6=E9=97=B4/?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + src/assets/images/cases/logo.jpg | Bin 0 -> 17054 bytes src/main.js | 5 +- src/utils/print.js | 76 +++ .../components/UltrasoundReportPrint.vue | 475 +++++++++--------- src/views/cases/detail.vue | 110 ++-- src/views/cases/index.vue | 2 - 7 files changed, 379 insertions(+), 290 deletions(-) create mode 100644 src/assets/images/cases/logo.jpg create mode 100644 src/utils/print.js diff --git a/package.json b/package.json index 768ba63..afd19f0 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "vue": "2.6.12", "vue-count-to": "1.0.13", "vue-cropper": "0.5.5", + "vue-print-nb": "^1.7.5", "vue-router": "3.4.9", "vuedraggable": "2.24.3", "vuex": "3.6.0" diff --git a/src/assets/images/cases/logo.jpg b/src/assets/images/cases/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..79eccbc7cb53969de2a127a1f096da2f91b300b4 GIT binary patch literal 17054 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 { + window.print(); + document.body.removeChild(style); + document.body.removeChild(container); + }); +} + +// 设置打印样式 +function getStyle() { + let styleContent = `#print-container { + display: none; + } + @media print { + body > :not(.print-container) { + display: none; + } + html, + body { + display: block !important; + } + #print-container { + display: block; + } + }`; + let style = document.createElement("style"); + style.innerHTML = styleContent; + return style; +} + +// 清空打印内容 +function cleanPrint() { + let div = document.getElementById('print-container') + if (!!div) { + document.querySelector('body').removeChild(div) + } +} + +// 新建DOM,将需要打印的内容填充到DOM +function getContainer(html) { + cleanPrint() + let container = document.createElement("div"); + container.setAttribute("id", "print-container"); + container.innerHTML = html; + return container; +} + +// 图片完全加载后再调用打印方法 +function getLoadPromise(dom) { + let imgs = dom.querySelectorAll("img"); + imgs = [].slice.call(imgs); + + if (imgs.length === 0) { + return Promise.resolve(); + } + + let finishedCount = 0; + return new Promise(resolve => { + function check() { + finishedCount++; + if (finishedCount === imgs.length) { + resolve(); + } + } + imgs.forEach(img => { + img.addEventListener("load", check); + img.addEventListener("error", check); + }) + }); +} diff --git a/src/views/cases/components/UltrasoundReportPrint.vue b/src/views/cases/components/UltrasoundReportPrint.vue index f5b9aa3..a9efa1c 100644 --- a/src/views/cases/components/UltrasoundReportPrint.vue +++ b/src/views/cases/components/UltrasoundReportPrint.vue @@ -1,277 +1,250 @@ - - - \ No newline at end of file + diff --git a/src/views/cases/detail.vue b/src/views/cases/detail.vue index 556d181..4acdc87 100644 --- a/src/views/cases/detail.vue +++ b/src/views/cases/detail.vue @@ -10,7 +10,7 @@ type="text" icon="el-icon-plus" @click="handleOpenFile" - v-if="form.status == 1 || form.status == 5" + :disabled="form.status != 1 && form.status != 5" > 新增 @@ -18,7 +18,7 @@ @@ -641,7 +633,10 @@ import { postReportPhraseDelete, postReportPhraseCount, postReportTemplateTree, + postReportPrint, } from "@/api/cases/index.js"; +import { postMessagePushToUser } from "@/api/knowledge"; +import { mapGetters } from "vuex"; // 导入打印组件 import UltrasoundReportPrint from "./components/UltrasoundReportPrint.vue"; import CreateGroupDialog from "@/views/message/components/CreateGroupDialog"; @@ -651,13 +646,13 @@ export default { UltrasoundReportPrint, CreateGroupDialog, }, + computed: { + ...mapGetters(["userInfo"]), + }, data() { return { - // 新增:控制打印弹窗显隐 - printDialogVisible: false, // ================== 分享相关 ================== shareDialogVisible: false, // 分享弹窗 - shareItem: null, // 当前分享的病例 // 主报告表单 form: { attachment: [], @@ -938,28 +933,71 @@ export default { }, // 打印 handlePrint() { - this.printDialogVisible = true; // 打开打印预览弹窗 + this.$refs.UltrasoundReportPrintRef.print(this.form); }, handleClose() { this.$router.back(); }, handleShare() { - this.shareItem = { - patientName: this.form.patientName, - medicalNo: this.form.medicalNo, - text_comment: this.form.text_comment, - conclusion: this.form.conclusion, - }; - this.shareDialogVisible = true; + this.$refs.createGroupDialogRef.show(); }, handleShareToContacts(selectedMembers) { + // form if (selectedMembers && selectedMembers.length > 0) { - const shareTarget = selectedMembers[0]; - this.$message.success(`已分享给 ${shareTarget.name}`); - console.log("分享病例:", this.shareItem, "给:", shareTarget); + postMessagePushToUser({ + client_id: "utalk-client-689", + message: { + at_users: [], + message_id: 0, + payload: { + content: JSON.stringify({ + age: this.form.patient_age || 0, + agetype: this.form.patient_age_type + ? patientAgeTypeList.find( + (i) => i.value == this.form.patient_age_type + ).label || "" + : "", + body: this.form.positions.length + ? this.form.positions + .map((item) => item.level2.name) + .join("|") + + (this.form.position_text + ? "|" + this.form.position_text + : "") + : this.form.position_text, + name: this.form.patient_name || "", + report_id: this.form.id, + sex: this.form.patient_sex + ? patientSexList.find((i) => i.value == this.form.patient_sex) + .label || "" + : "", + status: + this.form.submit_type || 0 + ? this.statusList.find( + (i) => i.value == this.form.submit_type + ).label || "" + : "", + }), + file_duration: 0, + file_ico: "", + file_name: "", + file_path: "", + file_size: 0, + file_type: "", + }, + scene: 1, + source_id: this.userInfo.id, + target_id: selectedMembers[0].id, + timestamp: 0, + type: "report_share", + }, + target_id: selectedMembers[0].id, + topic: "/user/¯", + }).then((res) => { + this.$modal.msgSuccess(`已分享给 ${selectedMembers[0].name}`); + }); + this.shareDialogVisible = false; } - this.shareDialogVisible = false; - this.shareItem = null; }, // 部位模板列表 loadTemplateList() { @@ -1129,7 +1167,7 @@ export default {