This commit is contained in:
陆柯 2020-07-06 09:18:24 +08:00
parent 6c3819c544
commit 73d810197d
2 changed files with 108 additions and 38 deletions

143
index.js
View File

@ -1,3 +1,7 @@
// #ifdef H5
// import device from 'current-device' // https://github.com/matthewhudson/current-device
// #endif
module.exports = {
clog(...message){
console.log('【【【【【【【【【【',
@ -8,42 +12,94 @@ module.exports = {
sleep: (ms)=>new Promise((resolve, reject)=>setTimeout(resolve, ms)),
async request(obj){
obj.method = 'POST'
obj.url = this.makeUrl(obj.url)
async request({method='POST', url, header={}, data={}}){
url = this.makeUrl(url)
if (uni.getStorageSync('_passtoken')) {
obj.header = obj.header || {}
obj.header._passtoken = uni.getStorageSync('_passtoken')
header._passtoken = uni.getStorageSync('_passtoken')
}
if (obj.data && (typeof(obj.method) === 'undefined' || obj.method==='GET')) { // 如果不是 POST 方法,要额外把参数JSON化
for (let key in obj.data) {
obj.data[key] = JSON.stringify(obj.data[key])
if (method==='GET') { // 如果不是 POST 方法,要额外把参数JSON化
for (let key in data) {
data[key] = JSON.stringify(data[key])
}
}
console.log('👇 👇 👇 👇 < Request > 👇 👇 👇 👇 ', obj, '👆 👆 👆 👆 < /Request > 👆 👆 👆 👆')
let [error, response] = await uni.request(obj)
console.log('👇 👇 👇 👇 < Request > 👇 👇 👇 👇 ', {method, url, header, data}, '👆 👆 👆 👆 < /Request > 👆 👆 👆 👆')
let [error, response] = await uni.request({method, url, header, data})
console.log('⬇️ ⬇️ ⬇️ ⬇️ < Response > ⬇️ ⬇️ ⬇️ ⬇️ ', response, '⬆️ ⬆️ ⬆️ ⬆️ < /Response > ⬆️ ⬆️ ⬆️ ⬆️')
return [error, response]
},
async uploadFile(obj){
obj.url = this.makeUrl(obj.url)
async pickupFile({type='image', count=1, mediaType, sizeType, sourceType, compress=false, url, header={}, formData={}, name='file'}){ // choose and upload file
let picked
if (type==='image'){
picked = await uni.chooseImage({count, sizeType})
}else if (type==='video'){
picked = await uni.chooseVideo({count, compressed:compress, sourceType})
}else {
picked = await uni.chooseMedia({count, mediaType, sizeType, sourceType})
}
let [errorChoose, {tempFilePaths, tempFiles}={}] = picked
if (!errorChoose){
if (compress && tempFiles[0].size>1048576){
console.log('========= compressing -------')
await uni.compressImage({ // compressImage not implemented yet in H5
src:tempFiles[0].path,
quality: 50,
success: res => {
console.log('======= compressed-------')
console.log(res)
tempFilePaths[0] = res.tempFilePath
},
fail: err => {
console.log('======= compress failed ====')
console.log(err)
}
})
}
if (uni.getStorageSync('_passtoken')) {
header._passtoken = uni.getStorageSync('_passtoken')
}else{
return [{ _ERROR: 'USER_OFFLINE', errMsg:'offline user cannot upload files' }, null]
}
for (let key in formData) { // multer 不会自动处理 JSON 数据,必须前后端配合处理
formData[key] = JSON.stringify(formData[key])
}
uni.showLoading()
let [errorUpload, response] = await uni.uploadFile({ filePath: tempFilePaths[0], url: this.makeUrl(url), header, formData, name })
uni.hideLoading()
if (response && response.data) {
try {
response.data = JSON.parse(response.data)
}catch (exception) {}
}
return [errorUpload, response]
}else{
return [{ _ERROR:'USER_CANCELED'}, null]
}
},
async uploadFile({url, name='file', formData={}, header={}}){
url = this.makeUrl(url)
if (uni.getStorageSync('_passtoken')) {
obj.header = obj.header || {}
obj.header._passtoken = uni.getStorageSync('_passtoken')
header._passtoken = uni.getStorageSync('_passtoken')
}else{
return [{ errMsg:'offline user cannot upload files' }, null]
}
if (obj.formData) { // multer 不会自动处理 JSON 数据,必须前后端配合处理
for (let key in obj.formData) {
obj.formData[key] = JSON.stringify(obj.formData[key])
}
for (let key in formData) { // multer 不会自动处理 JSON 数据,必须前后端配合处理
formData[key] = JSON.stringify(formData[key])
}
if (!obj.name) obj.name = 'file'
let [error, response] = await uni.uploadFile(obj)
let [error, response] = await uni.uploadFile({url,name,formData,header})
if (response && response.data) {
try {
response.data = JSON.parse(response.data)
@ -61,21 +117,36 @@ module.exports = {
// #endif
},
getPlatform(){
if (window && window.navigator) {
var agent = navigator.userAgent.toLowerCase()
if (agent.match(/MicroMessenger/i) == "micromessenger") {
return 'H5.wechat';
} else {
return 'H5'
}
}
switch(uni.getSystemInfoSync().platform){
case 'android': return 'app.android'
case 'ios': return 'app.ios'
case 'devtools': return 'devtools'
default: return 'unknown'
getSystemInfo(){
let systemInfo = uni.getSystemInfoSync()
// #ifdef H5
systemInfo.runtime = 'h5'
// if (device.mobile()){
// systemInfo.platform = 'mobile'
// }else if (device.desktop()){
// systemInfo.platform = 'desktop'
// }else if (device.tablet()){
// systemInfo.platform = 'tablet'
// }
if (/MicroMessenger/.test(window.navigator.userAgent)) { // 微信内置浏览器
systemInfo.browser = 'wechat'
}
// #endif
// #ifdef APP-PLUS || APP-PLUS-NVUE
systemInfo.runtime = 'app'
// 细分成 systemInfo.platform === ios or android
// #endif
// #ifdef MP
systemInfo.runtime = 'mp'
// 细分成 WEIXIN, ...
// #endif
return systemInfo
},
showToast({type, icon, image, title, duration, ...rest}){
@ -102,7 +173,7 @@ module.exports = {
// #ifdef H5
document.title = windowTitle || page.$store.getters['i18n/getAppName'] || page.appName // 必须放在 setNavigationBarTitle 之后,否则会被其覆盖掉。
// #endif
page.$store.commit('i18n/setTabbar') // 必须要在有 tab 的页面里重置才有效果
if (page.$store._mutations['i18n/setTabbar']) page.$store.commit('i18n/setTabbar') // 必须要在有 tab 的页面里重置才有效果
},
localeText(){

View File

@ -48,8 +48,7 @@ based on
if(!toast.clickable){
this.disappear(toast.uuid,toast.duration,toast.complete)
}//
else{
}else{ //
this.$emit('uuidCallback',toast.uuid)
}