From 3fd7b850d269e228fdd7d5dcdd78ce9dc83199f6 Mon Sep 17 00:00:00 2001 From: ysn <2126564605@qq.com> Date: Wed, 17 Jun 2026 13:23:59 +0800 Subject: [PATCH] =?UTF-8?q?=E7=97=85=E4=BE=8B=E5=BA=93-=E6=97=A5=E6=9C=9F?= =?UTF-8?q?=E8=8C=83=E5=9B=B4-=E5=BF=AB=E6=8D=B7=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E7=97=85=E4=BE=8B=E5=BA=93-=E8=AF=A6?= =?UTF-8?q?=E6=83=85-=E6=A3=80=E6=9F=A5=E7=BB=93=E6=9E=9C-=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/cases/detail.vue | 66 +++++++++++++++++++++++++++----------- src/views/cases/index.vue | 43 ++++++++----------------- 2 files changed, 61 insertions(+), 48 deletions(-) diff --git a/src/views/cases/detail.vue b/src/views/cases/detail.vue index 60acfca..bbd00ee 100644 --- a/src/views/cases/detail.vue +++ b/src/views/cases/detail.vue @@ -816,6 +816,7 @@ export default { equipments: [], positions: [], experts: [], + negative: 1, // 默认阴性(1=阴性,0=阳性) }, // 原始表单数据副本,用于检测是否有修改 originalForm: null, @@ -906,8 +907,10 @@ export default { // ==================== IndexedDB 目录句柄读取(与 SystemSettingDialog 共享 HiUTalkStoreDB) ==================== _openIDB() { return new Promise((resolve, reject) => { - const req = indexedDB.open('HiUTalkStoreDB', 1); - req.onupgradeneeded = () => { req.result.createObjectStore('handles'); }; + const req = indexedDB.open("HiUTalkStoreDB", 1); + req.onupgradeneeded = () => { + req.result.createObjectStore("handles"); + }; req.onsuccess = () => resolve(req.result); req.onerror = () => reject(req.error); }); @@ -915,31 +918,48 @@ export default { async _getStoredDirHandle(key) { const db = await this._openIDB(); return new Promise((resolve, reject) => { - const tx = db.transaction('handles', 'readonly'); - const req = tx.objectStore('handles').get(key); - req.onsuccess = () => { db.close(); resolve(req.result); }; - req.onerror = () => { db.close(); reject(req.error); }; + const tx = db.transaction("handles", "readonly"); + const req = tx.objectStore("handles").get(key); + req.onsuccess = () => { + db.close(); + resolve(req.result); + }; + req.onerror = () => { + db.close(); + reject(req.error); + }; }); }, // 图片操作:优先使用系统设置中的 videoPath 目录选择文件 async handleOpenFile() { // 尝试使用系统设置中配置的 videoPath 目录打开文件选择器 try { - const dirHandle = await this._getStoredDirHandle('screenshot_dir'); + const dirHandle = await this._getStoredDirHandle("screenshot_dir"); if (dirHandle && window.showOpenFilePicker) { // 检查目录权限 - let perm = await dirHandle.queryPermission({ mode: 'read' }); - if (perm !== 'granted') { - perm = await dirHandle.requestPermission({ mode: 'read' }); + let perm = await dirHandle.queryPermission({ mode: "read" }); + if (perm !== "granted") { + perm = await dirHandle.requestPermission({ mode: "read" }); } - if (perm === 'granted') { + if (perm === "granted") { const fileHandles = await window.showOpenFilePicker({ startIn: dirHandle, multiple: true, - types: [{ - description: 'Images', - accept: { 'image/*': ['.png', '.jpg', '.jpeg', '.gif', '.bmp', '.webp'] }, - }], + types: [ + { + description: "Images", + accept: { + "image/*": [ + ".png", + ".jpg", + ".jpeg", + ".gif", + ".bmp", + ".webp", + ], + }, + }, + ], }); // 逐个上传选中的文件 for (const fileHandle of fileHandles) { @@ -950,8 +970,11 @@ export default { } } } catch (e) { - if (e.name === 'AbortError') return; // 用户取消选择 - console.warn('基于系统设置目录的文件选择器不可用,降级使用默认文件选择:', e); + if (e.name === "AbortError") return; // 用户取消选择 + console.warn( + "基于系统设置目录的文件选择器不可用,降级使用默认文件选择:", + e + ); } // 降级:使用原始的文件 input 方式 this.$refs.fileInput.click(); @@ -1104,6 +1127,7 @@ export default { if (this.form.reviewer_id === 0) { this.form.reviewer_id = ""; } + this.form.negative = this.form.negative === 0 ? 0 : 1; // 保存原始数据副本,用于检测是否有修改 this.originalForm = JSON.parse(JSON.stringify(this.form)); this.getReviewers(); @@ -1144,7 +1168,7 @@ export default { patient_type: form.patient_type || 0, request_doctor: form.request_doctor || "", reviewer_id: form.reviewer_id || 0, - negative: form.negative ? 0 : 1, + negative: form.negative === 0 ? 0 : 1, position_text: form.position_text || "", text_comment: form.text_comment || "", text_conclusion: form.text_conclusion || "", @@ -1316,7 +1340,11 @@ export default { }, // 部位模板-新增/编辑 openTemplateDialog(form) { - this.newTemplateForm = { ...form, tpl_id: form.id || "",part_id:form.part_id || "" }; + this.newTemplateForm = { + ...form, + tpl_id: form.id || "", + part_id: form.part_id || "", + }; this.templateDialogOpen = true; this.loadTemplateTree(); }, diff --git a/src/views/cases/index.vue b/src/views/cases/index.vue index 4eb805f..e88b339 100644 --- a/src/views/cases/index.vue +++ b/src/views/cases/index.vue @@ -36,7 +36,6 @@ " size="mini" @click="handleDateShortcut(shortcut.key)" - class="date-shortcut-btn" > {{ shortcut.text }} @@ -458,6 +457,7 @@ import { } from "@/api/cases/index.js"; import CaseFormDialog from "./components/CaseFormDialog.vue"; import { mapGetters } from "vuex"; +import dayjs from "dayjs"; export default { name: "Cases", @@ -532,51 +532,36 @@ export default { methods: { // 快捷日期选择处理 handleDateShortcut(key) { - let start = new Date(); - let end = new Date(); + let start = dayjs(); + let end = dayjs(); switch (key) { case "today": break; case "yesterday": - end.setTime(end.getTime() - 3600 * 1000 * 24); - start = new Date(end); + start = dayjs().subtract(1, "day"); + end = dayjs().subtract(1, "day"); break; case "week": - const day = start.getDay(); - start.setDate(start.getDate() - day + (day === 0 ? -6 : 1)); - // 设置结束日期为本周最后一天(周日) - end.setDate(start.getDate() + 6); - end.setHours(23, 59, 59, 999); + start = dayjs().day(1); + end = dayjs().day(7); break; case "month": - end = new Date( - new Date().getFullYear(), - new Date().getMonth() + 1, - 0, - 23, - 59, - 59, - 999 - ); - start = new Date(new Date().getFullYear(), new Date().getMonth(), 1); + start = dayjs().startOf("month"); + end = dayjs().endOf("month"); break; case "lastMonth": - end = new Date(new Date().getFullYear(), new Date().getMonth(), 0); - start = new Date( - new Date().getFullYear(), - new Date().getMonth() - 1, - 1 - ); + start = dayjs().subtract(1, "month").startOf("month"); + end = dayjs().subtract(1, "month").endOf("month"); break; case "year": - end = new Date(new Date().getFullYear(), 11, 31, 23, 59, 59, 999); - start = new Date(new Date().getFullYear(), 0, 1); + start = dayjs().startOf("year"); + end = dayjs().endOf("year"); break; default: break; } - this.date = [start, end]; + this.date = [start.format("YYYY-MM-DD"), end.format("YYYY-MM-DD")]; this.currentDateShortcut = key; },