From 73d810197dd3153bbef490a0b2a8a56f6fd63739 Mon Sep 17 00:00:00 2001 From: Luk Lu Date: Mon, 6 Jul 2020 09:18:24 +0800 Subject: [PATCH] u --- index.js | 143 +++++++++++++++++++++++++++++++++----------- ucToast/ucToast.vue | 3 +- 2 files changed, 108 insertions(+), 38 deletions(-) diff --git a/index.js b/index.js index c73713b..22aa5ee 100644 --- a/index.js +++ b/index.js @@ -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(){ diff --git a/ucToast/ucToast.vue b/ucToast/ucToast.vue index 2ba54c6..5e45da7 100644 --- a/ucToast/ucToast.vue +++ b/ucToast/ucToast.vue @@ -48,8 +48,7 @@ based on if(!toast.clickable){ this.disappear(toast.uuid,toast.duration,toast.complete) - }//可点击消失 - else{ + }else{ //可点击消失 this.$emit('uuidCallback',toast.uuid) }