From 26c4b05abbc980fc029689c9c0272daba692cb94 Mon Sep 17 00:00:00 2001 From: Xu Zhimeng Date: Fri, 20 Oct 2023 16:54:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=87=E4=BB=B6=E8=BD=AC=E6=8D=A2?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/file.js | 54 ++++ .../components/CanberraIECImsTransfer.vue | 205 +++++--------- .../components/IntSpcCanberraIecTransfer.vue | 87 +++--- .../components/IntSpcImsTransfer.vue | 205 +++++--------- .../components/SpectrumTransferCom.vue | 255 ++++++++++++++++++ .../components/Modals/FtransltModal/index.vue | 2 +- src/views/spectrumAnalysis/index.vue | 1 - 7 files changed, 475 insertions(+), 334 deletions(-) create mode 100644 src/views/spectrumAnalysis/components/Modals/FtransltModal/components/SpectrumTransferCom.vue diff --git a/src/utils/file.js b/src/utils/file.js index 88867ca..f5bcc69 100644 --- a/src/utils/file.js +++ b/src/utils/file.js @@ -1,6 +1,11 @@ import { Modal } from 'ant-design-vue' import { saveAs } from 'file-saver' import JSZip from 'jszip' +import Vue from 'vue' +import signMd5Utils from '@/utils/encryption/signMd5Utils' +import Axios from 'axios' +import { ACCESS_TOKEN, TENANT_ID } from '@/store/mutation-types' +import { message } from 'ant-design-vue' /** * 弹窗填入文件名保存文件 @@ -85,3 +90,52 @@ export const zipFile = async (fileList, zipName) => { const content = await zip.generateAsync({ type: 'blob' }) return new File([content], zipName, { type: content.type }) } + +/** + * 根据响应头获取文件名 + * @param {String} contentDisposition + */ +export function getFileNameByHeaderContentDisposition(contentDisposition) { + const patt = new RegExp('file[Nn]ame=([^;]+\\.[^\\.;]+);*') + contentDisposition = decodeURI(contentDisposition) + const result = patt.exec(contentDisposition) + let fileName = result[1] + fileName = fileName.replace(/"/g, '') + return fileName +} + +export const fetchAndDownload = async (url, data) => { + const apiBaseUrl = window._CONFIG['domianURL'] || '/jeecg-boot' + const sign = signMd5Utils.getSign(url, data) + const response = await Axios({ + baseURL: apiBaseUrl, + method: 'post', + url, + data: data, + headers: { + 'X-Sign': sign, + 'X-TIMESTAMP': signMd5Utils.getTimestamp(), + 'X-Access-Token': Vue.ls.get(ACCESS_TOKEN), + 'tenant-id': Vue.ls.get(TENANT_ID) + } + }) + const { status, headers, data: responseData } = response + if (status == 200) { + if (typeof responseData == 'object') { + const { message: msg } = responseData + message.error(msg) + throw new Error(msg) + } else { + const disposition = headers['content-disposition'] + const fileName = getFileNameByHeaderContentDisposition(disposition) + if (typeof responseData == 'string') { + const blob = new Blob([responseData], { type: headers['content-type'] }) + saveAs(blob, fileName) + return fileName + } + } + } else { + message.error('This operation fails. Contact your system administrator') + throw new Error('This operation fails. Contact your system administrator') + } +} diff --git a/src/views/spectrumAnalysis/components/Modals/FtransltModal/components/CanberraIECImsTransfer.vue b/src/views/spectrumAnalysis/components/Modals/FtransltModal/components/CanberraIECImsTransfer.vue index 0249d07..d1e7c74 100644 --- a/src/views/spectrumAnalysis/components/Modals/FtransltModal/components/CanberraIECImsTransfer.vue +++ b/src/views/spectrumAnalysis/components/Modals/FtransltModal/components/CanberraIECImsTransfer.vue @@ -3,10 +3,10 @@
- + - + @@ -14,7 +14,7 @@ show-time format="YYYY/MM/DD HH:mm:ss" valueFormat="YYYY/MM/DD HH:mm:ss" - v-model="canberraIecImsParams.startTime" + v-model="params.collect_start" /> @@ -22,12 +22,12 @@ show-time format="YYYY/MM/DD HH:mm:ss" valueFormat="YYYY/MM/DD HH:mm:ss" - v-model="canberraIecImsParams.stopTime" + v-model="params.collect_stop" />

Total air volume sampled

- +
@@ -35,43 +35,43 @@
- + Designator
- +
- + Station code
- +
- + Detector code
- +
- + Sample geometry
- +
- + P G B - + PREL FULL @@ -80,44 +80,27 @@

Sample reference identification

- +

Background measurement identification

- +
- Transmit time + Transmit time
-
-
- -
Canberra IEC1455(.IEC)
-
-
-
- Data type -
- -
-
-
- -
IMS .ims .rms
-
-
-
- +
@@ -125,50 +108,58 @@ diff --git a/src/views/spectrumAnalysis/components/Modals/FtransltModal/components/IntSpcImsTransfer.vue b/src/views/spectrumAnalysis/components/Modals/FtransltModal/components/IntSpcImsTransfer.vue index 5a2ff6a..00e85b4 100644 --- a/src/views/spectrumAnalysis/components/Modals/FtransltModal/components/IntSpcImsTransfer.vue +++ b/src/views/spectrumAnalysis/components/Modals/FtransltModal/components/IntSpcImsTransfer.vue @@ -3,10 +3,10 @@
- + - + @@ -14,7 +14,7 @@ show-time format="YYYY/MM/DD HH:mm:ss" valueFormat="YYYY/MM/DD HH:mm:ss" - v-model="intSpacImsParams.startTime" + v-model="params.collect_start" /> @@ -22,12 +22,12 @@ show-time format="YYYY/MM/DD HH:mm:ss" valueFormat="YYYY/MM/DD HH:mm:ss" - v-model="intSpacImsParams.stopTime" + v-model="params.collect_stop" />

Total air volume sampled

- +
@@ -35,43 +35,43 @@
- + Designator
- +
- + Station code
- +
- + Detector code
- +
- + Sample geometry
- +
- + P G B - + PREL FULL @@ -80,44 +80,27 @@

Sample reference identification

- +

Background measurement identification

- +
- Transmit time + Transmit time
-
-
- -
ORTEC int.spc
-
-
-
- Data type -
- -
-
-
- -
IMS .ims .rms
-
-
-
- +
@@ -125,50 +108,58 @@ + + \ No newline at end of file diff --git a/src/views/spectrumAnalysis/components/Modals/FtransltModal/index.vue b/src/views/spectrumAnalysis/components/Modals/FtransltModal/index.vue index 9323783..7f5a87b 100644 --- a/src/views/spectrumAnalysis/components/Modals/FtransltModal/index.vue +++ b/src/views/spectrumAnalysis/components/Modals/FtransltModal/index.vue @@ -1,5 +1,5 @@