|
|
|
// H5选择文件
|
|
|
|
const chooseFileH5 = (extension = ['.xls', '.xlsx']) => {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
uni.chooseFile({
|
|
|
|
count: 1, //默认100
|
|
|
|
extension,
|
|
|
|
success(res) {
|
|
|
|
resolve(res.tempFilePaths[0]);
|
|
|
|
},
|
|
|
|
fail() {
|
|
|
|
reject('上传失败');
|
|
|
|
},
|
|
|
|
});
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
// 微信选择文件 从客户端会话选择文件。
|
|
|
|
const chooseFileWeixin = (extension = ['.xls', '.xlsx']) => {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
wx.chooseMessageFile({
|
|
|
|
count: 1,
|
|
|
|
extension,
|
|
|
|
type: 'file',
|
|
|
|
success(res) {
|
|
|
|
resolve(res.tempFiles[0].path);
|
|
|
|
},
|
|
|
|
fail() {
|
|
|
|
reject('上传失败');
|
|
|
|
},
|
|
|
|
});
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
// 选择文件
|
|
|
|
const chooseFile = (extension = ['.xls', '.xlsx']) => {
|
|
|
|
let fn = null;
|
|
|
|
/* #ifdef H5 */
|
|
|
|
fn = chooseFileH5(extension);
|
|
|
|
/* #endif */
|
|
|
|
|
|
|
|
/* #ifdef MP-WEIXIN */
|
|
|
|
fn = chooseFileWeixin(extension);
|
|
|
|
/* #endif */
|
|
|
|
return fn;
|
|
|
|
};
|
|
|
|
|
|
|
|
export default {
|
|
|
|
/**
|
|
|
|
* 上传单个文件
|
|
|
|
* @param {string} url 服务器地址
|
|
|
|
* @param {object} formData 上传的其他字段
|
|
|
|
* @param {array} extension 上传文件类型 扩展名数组
|
|
|
|
* @param {string} name
|
|
|
|
* @returns
|
|
|
|
*/
|
|
|
|
chooseAndUpload(url, formData = {}, extension = ['.xls', '.xlsx'], name = 'param') {
|
|
|
|
uni.hideLoading();
|
|
|
|
clearTimeout(timer);
|
|
|
|
let timer = null;
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
const token = uni.$t.storage.getStorageSync(uni.$t.app.tokenKey);
|
|
|
|
if (!token) {
|
|
|
|
return reject('用户未登录,请登录后重试');
|
|
|
|
}
|
|
|
|
chooseFile(extension)
|
|
|
|
.then(filePath => {
|
|
|
|
console.log('filePath: ', filePath);
|
|
|
|
if (!timer) {
|
|
|
|
timer = setTimeout(() => {
|
|
|
|
uni.$t.ui.showLoading('正在上传...');
|
|
|
|
timer = null;
|
|
|
|
}, 800);
|
|
|
|
}
|
|
|
|
// 开始上传
|
|
|
|
uni.uploadFile({
|
|
|
|
url,
|
|
|
|
filePath,
|
|
|
|
name,
|
|
|
|
formData,
|
|
|
|
header: { Authorization: `Bearer ${token}` },
|
|
|
|
success: ({ data, statusCode }) => {
|
|
|
|
clearTimeout(timer);
|
|
|
|
uni.hideLoading();
|
|
|
|
|
|
|
|
if (statusCode === 200 && data) {
|
|
|
|
const { code, msg } = JSON.parse(data);
|
|
|
|
if (code !== 200) {
|
|
|
|
reject(msg);
|
|
|
|
} else {
|
|
|
|
resolve(JSON.parse(data).data);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
reject('上传失败');
|
|
|
|
}
|
|
|
|
},
|
|
|
|
fail: error => {
|
|
|
|
clearTimeout(timer);
|
|
|
|
uni.hideLoading();
|
|
|
|
reject(error);
|
|
|
|
},
|
|
|
|
});
|
|
|
|
})
|
|
|
|
.catch(error => {
|
|
|
|
clearTimeout(timer);
|
|
|
|
uni.hideLoading();
|
|
|
|
reject(error);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
},
|
|
|
|
};
|