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 = { module.exports = {
clog(...message){ clog(...message){
console.log('【【【【【【【【【【', console.log('【【【【【【【【【【',
@ -8,42 +12,94 @@ module.exports = {
sleep: (ms)=>new Promise((resolve, reject)=>setTimeout(resolve, ms)), sleep: (ms)=>new Promise((resolve, reject)=>setTimeout(resolve, ms)),
async request(obj){ async request({method='POST', url, header={}, data={}}){
obj.method = 'POST'
obj.url = this.makeUrl(obj.url)
url = this.makeUrl(url)
if (uni.getStorageSync('_passtoken')) { if (uni.getStorageSync('_passtoken')) {
obj.header = obj.header || {} header._passtoken = uni.getStorageSync('_passtoken')
obj.header._passtoken = uni.getStorageSync('_passtoken')
} }
if (obj.data && (typeof(obj.method) === 'undefined' || obj.method==='GET')) { // 如果不是 POST 方法,要额外把参数JSON化 if (method==='GET') { // 如果不是 POST 方法,要额外把参数JSON化
for (let key in obj.data) { for (let key in data) {
obj.data[key] = JSON.stringify(obj.data[key]) data[key] = JSON.stringify(data[key])
} }
} }
console.log('👇 👇 👇 👇 < Request > 👇 👇 👇 👇 ', obj, '👆 👆 👆 👆 < /Request > 👆 👆 👆 👆') console.log('👇 👇 👇 👇 < Request > 👇 👇 👇 👇 ', {method, url, header, data}, '👆 👆 👆 👆 < /Request > 👆 👆 👆 👆')
let [error, response] = await uni.request(obj) let [error, response] = await uni.request({method, url, header, data})
console.log('⬇️ ⬇️ ⬇️ ⬇️ < Response > ⬇️ ⬇️ ⬇️ ⬇️ ', response, '⬆️ ⬆️ ⬆️ ⬆️ < /Response > ⬆️ ⬆️ ⬆️ ⬆️') console.log('⬇️ ⬇️ ⬇️ ⬇️ < Response > ⬇️ ⬇️ ⬇️ ⬇️ ', response, '⬆️ ⬆️ ⬆️ ⬆️ < /Response > ⬆️ ⬆️ ⬆️ ⬆️')
return [error, response] return [error, response]
}, },
async uploadFile(obj){ async pickupFile({type='image', count=1, mediaType, sizeType, sourceType, compress=false, url, header={}, formData={}, name='file'}){ // choose and upload file
obj.url = this.makeUrl(obj.url) 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')) { if (uni.getStorageSync('_passtoken')) {
obj.header = obj.header || {} header._passtoken = uni.getStorageSync('_passtoken')
obj.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')) {
header._passtoken = uni.getStorageSync('_passtoken')
}else{ }else{
return [{ errMsg:'offline user cannot upload files' }, null] return [{ errMsg:'offline user cannot upload files' }, null]
} }
if (obj.formData) { // multer 不会自动处理 JSON 数据,必须前后端配合处理
for (let key in obj.formData) { for (let key in formData) { // multer 不会自动处理 JSON 数据,必须前后端配合处理
obj.formData[key] = JSON.stringify(obj.formData[key]) formData[key] = JSON.stringify(formData[key])
} }
}
if (!obj.name) obj.name = 'file' let [error, response] = await uni.uploadFile({url,name,formData,header})
let [error, response] = await uni.uploadFile(obj)
if (response && response.data) { if (response && response.data) {
try { try {
response.data = JSON.parse(response.data) response.data = JSON.parse(response.data)
@ -61,21 +117,36 @@ module.exports = {
// #endif // #endif
}, },
getPlatform(){ getSystemInfo(){
if (window && window.navigator) { let systemInfo = uni.getSystemInfoSync()
var agent = navigator.userAgent.toLowerCase() // #ifdef H5
if (agent.match(/MicroMessenger/i) == "micromessenger") { systemInfo.runtime = 'h5'
return 'H5.wechat';
} else { // if (device.mobile()){
return 'H5' // systemInfo.platform = 'mobile'
} // }else if (device.desktop()){
} // systemInfo.platform = 'desktop'
switch(uni.getSystemInfoSync().platform){ // }else if (device.tablet()){
case 'android': return 'app.android' // systemInfo.platform = 'tablet'
case 'ios': return 'app.ios' // }
case 'devtools': return 'devtools'
default: return 'unknown' 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}){ showToast({type, icon, image, title, duration, ...rest}){
@ -102,7 +173,7 @@ module.exports = {
// #ifdef H5 // #ifdef H5
document.title = windowTitle || page.$store.getters['i18n/getAppName'] || page.appName // 必须放在 setNavigationBarTitle 之后,否则会被其覆盖掉。 document.title = windowTitle || page.$store.getters['i18n/getAppName'] || page.appName // 必须放在 setNavigationBarTitle 之后,否则会被其覆盖掉。
// #endif // #endif
page.$store.commit('i18n/setTabbar') // 必须要在有 tab 的页面里重置才有效果 if (page.$store._mutations['i18n/setTabbar']) page.$store.commit('i18n/setTabbar') // 必须要在有 tab 的页面里重置才有效果
}, },
localeText(){ localeText(){

View File

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