From 706fe8ac78579d4cdc6403786117974dd94f1623 Mon Sep 17 00:00:00 2001 From: "SWX\\10484" <1048449493@qq.com> Date: Tue, 16 Jun 2026 11:56:23 +0800 Subject: [PATCH] bug --- src/layout/components/SystemSettingDialog.vue | 3 +- src/views/cases/detail.vue | 53 ++++++++++++++++++- 2 files changed, 53 insertions(+), 3 deletions(-) diff --git a/src/layout/components/SystemSettingDialog.vue b/src/layout/components/SystemSettingDialog.vue index 938ac8b..8db0c7b 100644 --- a/src/layout/components/SystemSettingDialog.vue +++ b/src/layout/components/SystemSettingDialog.vue @@ -205,7 +205,8 @@ export default { // 获取默认路径 getDefaultPath() { const version = this.$store.getters.loginInfo?.upgrade_data?.version || "V01.01.16"; - return `D:\\RUS_${version}\\HiUTalkStore`; + // return `D:\\RUS_${version}\\HiUTalkStore`; + return '' }, // 从本地加载设置 loadSettings() { diff --git a/src/views/cases/detail.vue b/src/views/cases/detail.vue index e7f8e26..f2c3b34 100644 --- a/src/views/cases/detail.vue +++ b/src/views/cases/detail.vue @@ -886,8 +886,57 @@ export default { element.scrollIntoView({ behavior: "smooth", block: "start" }); } }, - // 图片操作 - handleOpenFile() { + // ==================== IndexedDB 目录句柄读取(与 SystemSettingDialog 共享 HiUTalkStoreDB) ==================== + _openIDB() { + return new Promise((resolve, reject) => { + const req = indexedDB.open('HiUTalkStoreDB', 1); + req.onupgradeneeded = () => { req.result.createObjectStore('handles'); }; + req.onsuccess = () => resolve(req.result); + req.onerror = () => reject(req.error); + }); + }, + 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); }; + }); + }, + // 图片操作:优先使用系统设置中的 videoPath 目录选择文件 + async handleOpenFile() { + // 尝试使用系统设置中配置的 videoPath 目录打开文件选择器 + try { + 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' }); + } + if (perm === 'granted') { + const fileHandles = await window.showOpenFilePicker({ + startIn: dirHandle, + multiple: true, + types: [{ + description: 'Images', + accept: { 'image/*': ['.png', '.jpg', '.jpeg', '.gif', '.bmp', '.webp'] }, + }], + }); + // 逐个上传选中的文件 + for (const fileHandle of fileHandles) { + const file = await fileHandle.getFile(); + await this.uploadImageToMinIO(file); + } + return; + } + } + } catch (e) { + if (e.name === 'AbortError') return; // 用户取消选择 + console.warn('基于系统设置目录的文件选择器不可用,降级使用默认文件选择:', e); + } + // 降级:使用原始的文件 input 方式 this.$refs.fileInput.click(); }, async handleFileChange(event) {