diff --git a/src/utils/FilePicker.js b/src/utils/FilePicker.js index 46b2b15..08a6706 100644 --- a/src/utils/FilePicker.js +++ b/src/utils/FilePicker.js @@ -46,8 +46,7 @@ export class FilePicker { */ static async isFileInDirectory(directoryHandle, fileHandle) { const relativePaths = await directoryHandle.resolve(fileHandle) - - if (relativePaths === null) { + if (relativePaths === null || relativePaths.length > 1) { return false } else { return true diff --git a/src/utils/file.js b/src/utils/file.js index ce06fef..4c1830c 100644 --- a/src/utils/file.js +++ b/src/utils/file.js @@ -1,5 +1,6 @@ import { Modal } from 'ant-design-vue' import { saveAs } from 'file-saver' +import JSZip from 'jszip' /** * 弹窗填入文件名保存文件 @@ -55,3 +56,23 @@ export const readFile = (file, fileType = 'text') => { } }) } + +/** + * 压缩文件 + * @param {Array} fileList + * @param {string} zipName + * @returns + */ +export const zipFile = async (fileList, zipName) => { + const zip = new JSZip() + const promises = [] + fileList.forEach(file => { + promises.push(readFile(file, 'arrayBuffer')) + }) + const result = await Promise.all(promises) + result.forEach(res => { + zip.file(res.fileName, res.data) + }) + const content = await zip.generateAsync({ type: 'blob' }) + return new File([content], zipName, { type: content.type }) +} diff --git a/src/utils/phdHelper.js b/src/utils/phdHelper.js index e5629a4..04ef354 100644 --- a/src/utils/phdHelper.js +++ b/src/utils/phdHelper.js @@ -23,12 +23,12 @@ export class PHDParser { /** * sample 谱的文件名 */ - sampleFileName = '' + sampleFilePrefix = '' /** * 其他文件名 */ - otherFileNames = [] + otherFilePrefixes = [] /** * 构造函数 @@ -53,9 +53,9 @@ export class PHDParser { if (this.fileType == 'B') { // 如果解析的是sample 文件,则获取其他三个文件 if (this.dataType == PHD_DATA_TYPE.SAMPLEPHD) { - const fileNames = this.getFileNames(fileNameLine) - this.sampleFileName = fileNames.splice(0, 1)[0] - this.otherFileNames = fileNames + const filePrefixes = this.getFilePrefixes(fileNameLine) + this.sampleFilePrefix = filePrefixes.splice(0, 1)[0] + this.otherFilePrefixes = filePrefixes } } } @@ -93,16 +93,15 @@ export class PHDParser { * 获取全部文件名 * @param {string} text */ - getFileNames(text) { - const unHandledfileNames = this.splitLineText(text) - const fileTypes = ['S', 'D', 'G'] - const fileNames = unHandledfileNames - .filter(fileName => fileName) - .map((fileName, index) => { - fileName = fileName.replace(/(\d{4})\/(\d{2})\/(\d{2})-(\d{2}):(\d{2})/, '$1$2$3_$4$5') - return `${fileName}_${fileTypes[index]}_${this.qualify}` + getFilePrefixes(text) { + const unHandledfilePrefixes = this.splitLineText(text) + const filePrefixes = unHandledfilePrefixes + .filter(filePrefix => filePrefix) + .map(filePrefix => { + filePrefix = filePrefix.replace(/(\d{4})\/(\d{2})\/(\d{2})-(\d{2}):(\d{2})/, '$1$2$3_$4$5') + return filePrefix + '_' }) - return fileNames + return filePrefixes } } diff --git a/src/views/spectrumAnalysis/components/Modals/LoadFromFileModal.vue b/src/views/spectrumAnalysis/components/Modals/LoadFromFileModal.vue index 766dbe1..9c28bdc 100644 --- a/src/views/spectrumAnalysis/components/Modals/LoadFromFileModal.vue +++ b/src/views/spectrumAnalysis/components/Modals/LoadFromFileModal.vue @@ -10,53 +10,54 @@ bordered :scroll="{ y: 450 }" > -