diff --git a/package.json b/package.json index 0011219..5e8026c 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "fuse.js": "6.4.6", "highlight.js": "^11.5.1", "js-cookie": "3.0.1", + "js-file-download": "^0.4.12", "js-md5": "^0.7.3", "jsencrypt": "3.2.1", "jsrsasign": "^10.8.6", diff --git a/src/api/tool/file.js b/src/api/tool/file.js index 03b64a8..da0482b 100644 --- a/src/api/tool/file.js +++ b/src/api/tool/file.js @@ -1,45 +1,45 @@ -import request from '@/utils/request' +import request, { downFileById } from '@/utils/request' /** -* 文件存储分页查询 -* @param {查询条件} data -*/ + * 文件存储分页查询 + * @param {查询条件} data + */ export function listSysfile(query) { return request({ url: 'tool/file/list', method: 'get', - params: query, + params: query }) } /** -* 新增文件存储 -* @param data -*/ + * 新增文件存储 + * @param data + */ export function addSysfile(data) { return request({ url: 'tool/file', method: 'post', - data: data, + data: data }) } /** -* 修改文件存储 -* @param data -*/ + * 修改文件存储 + * @param data + */ export function updateSysfile(data) { return request({ url: 'tool/file', method: 'PUT', - data: data, + data: data }) } /** -* 获取文件存储详情 -* @param {Id} -*/ + * 获取文件存储详情 + * @param {Id} + */ export function getSysfile(id) { return request({ url: 'tool/file/' + id, @@ -48,9 +48,9 @@ export function getSysfile(id) { } /** -* 删除文件存储 -* @param {主键} pid -*/ + * 删除文件存储 + * @param {主键} pid + */ export function delSysfile(pid) { return request({ url: 'tool/file/' + pid, @@ -67,3 +67,6 @@ export function exportSysfile(query) { }) } +export const download = (fileId) => { + return downFileById('tool/file/download', fileId) +} diff --git a/src/utils/request.js b/src/utils/request.js index 49d7a1a..fd38eac 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -212,4 +212,48 @@ export async function downFile(url, params, config) { }) } +export const downFileById = (url, id) => { + return new Promise((resolve, reject) => { + downloadLoadingInstance = ElLoading.service({ text: '正在下载数据,请稍候', background: 'rgba(0, 0, 0, 0.7)' }) + service + .get(`${url}/${id}`, { + headers: { 'Content-Type': 'application/json; application/octet-stream' }, + responseType: 'blob', + onDownloadProgress: (progressEvent) => { + // console.log('下载进度:', progressEvent) + let step = Math.round((progressEvent.loaded / progressEvent.total) * 100) + // console.log(step + '%') + } + }) + .then(async (resp) => { + const { data } = resp + + const isLogin = await blobValidate(data) + if (isLogin) { + resolve(resp) + } else { + const resText = await data.text() + const rspObj = JSON.parse(resText) + const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default'] + + ElMessage({ + message: errMsg, + type: 'error' + }) + reject() + } + downloadLoadingInstance.close() + }) + // @ts-ignore + .catch((err) => { + reject() + ElMessage({ + message: '下载文件出现错误,请联系管理员!', + type: 'error' + }) + downloadLoadingInstance.close() + }) + }) +} + export default service diff --git a/src/views/index.vue b/src/views/index.vue index 13c26d5..aebf633 100644 --- a/src/views/index.vue +++ b/src/views/index.vue @@ -108,10 +108,10 @@