common.ts
5.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
import { ElMessage } from 'element-plus'
import { getDownloadUrl, download } from "@/utils/common";
import { getImageContent } from "@/api/modules/queryService";
import { getDownFileSignByUrl, obsDownloadRequest, parseAndDecodeUrl } from './obsService';
import request from '@/utils/request';
// export const onUploadFilePreview = (file) => {
// let url = file.url;
// getImageContent(url).then((res: any) => {
// if (res && !res.msg) {
// let name = file.name;
// var fileSuffix = name ? name.substring(name.lastIndexOf('.') + 1).toLowerCase() : '';
// if (fileSuffix === 'png' || fileSuffix === 'jpeg' || fileSuffix === 'jpg' || fileSuffix === 'pdf') { //浏览器可以支持图片和pdf预览
// let fileUrl = <string>getDownloadUrl(res, name, fileSuffix);
// let win = window.open(fileUrl, name);
// win && (win.document.title = name);
// } else {
// download(res, name, fileSuffix);
// }
// } else {
// res?.msg && ElMessage.error(res?.msg);
// }
// })
// }
// export const onUploadFileDownload = (file) => {
// let url = file.url;
// getImageContent(url).then((res: any) => {
// if (res && !res.msg) {
// let name = file.name;
// var fileSuffix = name ? name.substring(name.lastIndexOf('.') + 1) : '';
// download(res, name, fileSuffix);
// } else {
// res?.msg && ElMessage.error(res?.msg);
// }
// })
// }
export const onUploadFileDownload = async (params) => {
const {name, url} = params;
const refSignInfo: any = await getDownFileSignByUrl(parseAndDecodeUrl(url).fileName);
if (!refSignInfo?.data) {
refSignInfo?.msg && ElMessage.error(refSignInfo?.msg);
return;
}
obsDownloadRequest(refSignInfo?.data).then((res: any) => {
if (res && !res.msg) {
var fileSuffix = name ? name.substring(name.lastIndexOf('.') + 1) : '';
download(res, name, fileSuffix);
} else {
res?.msg && ElMessage.error(res?.msg);
}
})
}
export function getPathUrl(url:string) {
// 查找问号的位置
var questionMarkIndex = url.lastIndexOf('?');
// 如果存在问号,则返回问号之前的部分;如果不存在,则返回原url
return questionMarkIndex !== -1 ? url.substring(0, questionMarkIndex) : url;
}
export const onUploadFilePreview = async (params) => {
// console.log(params, 'params');
let name = ''
let url = '';
if (params && typeof params == 'string') {
url = params;
} else {
name = params.name;
url = params.url;
}
url = getPathUrl(url);
// let f = formInline.value[item.field].find(i => i.name == file.name);
// let url = f.url;
let urlInfo = parseAndDecodeUrl(url);
let fileName: string = urlInfo.fileName;
if (!name) {
// 获取最后的文件名部分
name = urlInfo.lastPart;
}
const refSignInfo: any = await getDownFileSignByUrl(fileName);
if (!refSignInfo?.data) {
refSignInfo?.msg && ElMessage.error(refSignInfo?.msg);
return;
}
obsDownloadRequest(refSignInfo?.data).then((res: any) => {
if (res && !res.msg) {
var fileSuffix = name ? name.substring(name.lastIndexOf('.') + 1).toLowerCase() : '';
if (fileSuffix === 'png' || fileSuffix === 'jpeg' || fileSuffix === 'jpg' || fileSuffix === 'pdf') { //浏览器可以支持图片和pdf预览
let fileUrl = <string>getDownloadUrl(res, name, fileSuffix);
let win = window.open(fileUrl, name);
win && (win.document.title = name);
} else {
download(res, name, fileSuffix);
}
} else {
res?.msg && ElMessage.error(res?.msg);
}
});
}
// 设置显示的文件名
export const setFileName = (name) => {
if(name && name.indexOf('_') > -1){
const s = name.indexOf("_");
const e = name.lastIndexOf(".");
const newName = name.slice(0, s) + name.slice(e);
return newName
} else {
return name || '--';
}
}
// 已任意长度分割数组
export const chunk = (array, size) => {
//获取数组的长度,如果你传入的不是数组,那么获取到的就是undefined
const length = array.length;
//判断不是数组,或者size没有设置,size小于1,就返回空数组
if (!length || !size || size < 1) {
return [];
}
//核心部分
var index = 0; //用来表示切割元素的范围start
var resIndex = 0; //用来递增表示输出数组的下标
//根据length和size算出输出数组的长度,并且创建它。
var result = new Array(Math.ceil(length / size));
//进行循环
while (index < length) {
//循环过程中设置result[0]和result[1]的值。该值根据array.slice切割得到。
result[resIndex++] = array.slice(index, (index += size));
}
//输出新数组
return result;
}
/** 封装查询API接口,公共处理错误提示。 */
export const requestAPI = (urlParams, loadingCallback?: (loading: boolean) => void) => {
loadingCallback?.(true);
return new Promise((resolve, reject) => {
request(urlParams)
.then((res: any) => {
loadingCallback?.(false);
if (res?.code == '00000') {
resolve(res)
} else {
res?.msg && ElMessage.error(res?.msg)
reject(res)
}
})
.catch((error: Error) => {
loadingCallback?.(false);
reject(error)
})
})
}