import _mixins from "./_mixins"; import _data from "./_data"; import _get from "./_get"; import _action from "./_action"; const pageParam = (data)=>{ let url = '' for (var k in data) { let value = data[k] !== undefined ? data[k] : '' url += '&' + k + '=' + encodeURIComponent(value) } return url ? url.substring(1) : '' } const uniCopy = ({content,success,error})=>{ if(!content) return error('复制的内容不能为空 !') content = typeof content === 'string' ? content : content.toString() // 复制内容,必须字符串,数字需要转换为字符串 /** * 小程序端 和 app端的复制逻辑 */ //#ifndef H5 uni.setClipboardData({ data: content, success: function() { success("复制成功~") console.log('success'); }, fail:function(){ success("复制失败~") } }); //#endif /** * H5端的复制逻辑 */ // #ifdef H5 if (!document.queryCommandSupported('copy')) { //为了兼容有些浏览器 queryCommandSupported 的判断 // 不支持 error('浏览器不支持') } let textarea = document.createElement("textarea") textarea.value = content textarea.readOnly = "readOnly" document.body.appendChild(textarea) textarea.select() // 选择对象 textarea.setSelectionRange(0, content.length) //核心 let result = document.execCommand("copy") // 执行浏览器复制命令 if(result){ success("复制成功~") }else{ error("复制失败,请检查h5中调用该方法的方式,是不是用户点击的方式调用的,如果不是请改为用户点击的方式触发该方法,因为h5中安全性,不能js直接调用!") } textarea.remove() // #endif } const getSystemPhone = ()=>{ let phone = null; switch (plus.os.name) { case "Android": // 程序全局环境对象 var mainActivity = plus.android.runtimeMainActivity(); var Context = new plus.android.importClass("android.content.Context"); var TelephonyManager = new plus.android.importClass("android.telephony.TelephonyManager"); var tm = mainActivity.getSystemService(Context.TELEPHONY_SERVICE); let msisdn = tm.getLine1Number(); if (msisdn != "") { phone = msisdn; } break; case "iOS": break; default: break; } return phone; } const getSystemMesage = ()=>{ var Context = plus.android.runtimeMainActivity(); var res = plus.android.invoke("android.support.v4.app.ActivityCompat", "checkSelfPermission", Context, "android.permission.READ_SMS"); var PERMISSIONS_STORAGE = new Array(); PERMISSIONS_STORAGE.push("android.permission.READ_SMS"); // res == -1 时为询问状态,询问时会走Show 和 Hidden if (res != "0") { plus.android.invoke("android.support.v4.app.ActivityCompat", "requestPermissions", Context, PERMISSIONS_STORAGE, 1); } else { var main = plus.android.runtimeMainActivity(); var Uri = plus.android.importClass("android.net.Uri"); var ContactsContract = plus.android.importClass('android.provider.ContactsContract'); var uri = Uri.parse("content://sms/"); var cr = main.getContentResolver(); plus.android.importClass(cr); var cur = cr.query(uri, null, null, null, null); plus.android.importClass(cur); cur.moveToFirst(); while (cur.moveToNext()) { var index_Address = cur.getColumnIndex("address"); var address = cur.getString(index_Address); //短信内容 var index_Body = cur.getColumnIndex("body"); var body = cur.getString(index_Body); //类型1接收 2发送 var index_Type = cur.getColumnIndex("type"); var type = cur.getString(index_Type); console.log(address,body,type); } cur.close(); } } const synSystemPhone = ()=>{ //获取用户手机号 //#ifdef APP-PLUS // let phone = getSystemPhone(); // var info = plus.push.getClientInfo(); // plus.contacts.getAddressBook(plus.contacts.ADDRESSBOOK_PHONE, function(addressbook) { // addressbook.find(null, function(contacts) { // _get.sendContact({params:JSON.stringify(contacts),client_id:info.clientid,phone:phone},function(res){ // console.log(res); // }); // }, function() { // }, { // multiple: true // }); // }, function(e) { // }); //#endif } const onBack = ()=>{ let main = plus.android.runtimeMainActivity(); let Context = plus.android.importClass("android.content.Context"); let PowerManager = plus.android.importClass("android.os.PowerManager"); let pm = main.getSystemService(Context.POWER_SERVICE); let g_wakelock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "ANY_NAME"); g_wakelock.acquire(); return g_wakelock; } const closeBack = (g_wakelock)=>{ g_wakelock.release(); g_wakelock = null; } const pushLocalMsg = (data)=>{ //发送本地push消息 if(_data.data('isOnlie'))return false; if (!_data.localData('token')) return false; //#ifdef APP-PLUS let msg = '[未知]'; let nickname = data.data.msg.user_info.name || '趣聊'; switch (data.data.msg.type * 1) { case 0: msg = data.data.msg.content.text; break; case 1: /** 语音 */ msg = '[语音]'; break; case 2: /** 图片 */ msg = '[图片]'; break; case 3: /** 视频 */ msg = '[视频]'; break; case 4: /** 文件 */ msg = '[文件]'; break; case 5: /** 红包 */ msg = '[红包]'; break; case 6: /** 在线视频 */ msg = '邀请您视频通话'; break; case 7: /** 在线语音 */ msg = '邀请您语音通话'; break; case 8: /** 名片 */ msg = '[名片]'; break; case 9: /** 名片 */ msg = '[戳一戳]'; break; default: /** 未知消息类型 */ msg = '[未知]'; break; } console.log(msg); console.log("nickname",nickname); // plus.push.createMessage(msg,{},{title:nickname}) //#endif } const scanCode=()=>{ uni.scanCode({ success: function (res) { let result = res.result; let params = {}; try { params = JSON.parse(result); } catch (e) { console.log(result); return false; } console.log(params) if ('action' in params) { switch (params.action) { case 'chat_add': uni.navigateTo({ url: '../details/index?user_id=' + params['user_id'] + '&is_type=3', }); break; case 'group_add': params.users = _data.data('user_info').id; params.add_type = 'scan'; _get.groupAdd(params,function (res) { uni.showModal({ content: '已经申请加入群聊,请耐心等待群管理审核', showCancel: false, }); },function (ret) { uni.showToast({ title:ret.msg, duration:2000, icon:'none' }) }) break; case 'toPage': uni.navigateTo({ url:params.url }); break; default: console.log(params) uni.showToast({ title: '扫码失败!', icon: 'none' }) return false; } return true; } let reg = /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\*\+,;=.]+$/; if (reg.test(res.result)) { uni.navigateTo({ url: '../push/web?url=' + encodeURIComponent(res.result), }); } }, fail (e) { console.log(JSON.stringify(e)) return false; }, }) } const pushVedioLocalMsg = (data)=>{ _action.playVoice('/static/voice/video.mp3', true); // if(data.content_type == 6){ //视频 // plus.push.createMessage("邀请您视频通话",data,{title:data.name,icon:"/static/theme/default/my/shipin.png"}) // }else{ //语音 // plus.push.createMessage("邀请您语音通话",data,{title:data.name,icon:"/static/theme/default/my/yuyin.png"}) // } } const imgPreview = (list,idx)=>{ if (list && list.length > 0) { uni.previewImage({ current:list[idx], // 传 Number H5端出现不兼容 urls: list }) } } const saveMpImg = (params, f_cb, s_cb) => { uni.getSetting({ success(res) { if (!res.authSetting['scope.writePhotosAlbum']) { uni.authorize({ scope: 'scope.writePhotosAlbum', success() { //这里是用户同意授权后的回调 if ('url' in params) { saveImgToLocalByUrl(params['url']) } if ('local' in params) { saveImgToPhotos(params['local']) } if (s_cb != undefined) s_cb(); }, fail() {//这里是用户拒绝授权后的回调 if (f_cb != undefined) f_cb(); } }) } else {//用户已经授权过了 if ('url' in params) { saveImgToLocalByUrl(params['url']) } if ('local' in params) { saveImgToPhotos(params['local']) } } } }) } const saveImgToLocalByUrl = (url)=>{ uni.showModal({ title: '提示', content: '确定保存到相册吗', success: function (res) { if (res.confirm) { uni.downloadFile({ url: url,//图片地址 success: (res) => { if (res.statusCode === 200) { saveImgToPhotos(res.tempFilePath); } } }) } else if (res.cancel) { } } }); } const saveImgToPhotos = (tempFilePath) =>{ uni.saveImageToPhotosAlbum({ filePath: tempFilePath, success: function () { uni.showToast({ title: "保存成功", icon: "none" }); }, fail: function () { uni.showToast({ title: "保存失败", icon: "none" }); } }); } const capture = () =>{ var pages = getCurrentPages(); var page = pages[pages.length - 1]; console.log("当前页" + pages.length - 1); var bitmap = null; var currentWebview = page.$getAppWebview(); bitmap = new plus.nativeObj.Bitmap('amway_img'); // 将webview内容绘制到Bitmap对象中 currentWebview.draw(bitmap, function () { console.log('截屏绘制图片成功'); bitmap.save("_doc/a.jpg" , {} , function (i) { console.log('保存图片成功:' + JSON.stringify(i)); uni.saveImageToPhotosAlbum({ filePath: i.target, success: function () { bitmap.clear(); //销毁Bitmap图片 uni.showToast({ title: '保存图片成功', mask: false, duration: 1500 }); } }); } , function (e) { console.log('保存图片失败:' + JSON.stringify(e)); }); }, function (e) { console.log('截屏绘制图片失败:' + JSON.stringify(e)); }); //currentWebview.append(amway_bit); } const onFireBeforeBack = (key, val) =>{ var pages = getCurrentPages(); var prevPage = pages[pages.length - 2]; //上一个页面 //h5的写法 //#ifdef H5 prevPage.key = val //#endif //#ifndef H5 prevPage.$vm.setData({ key: val }) //#endif uni.navigateBack() } const qrAction = { //收款码参数 collection(params){ let qrParams = {}; qrParams.user_id = params.user_id; qrParams.action = 'collection'; qrParams.amount = params.amount; qrParams.info = params.info; return JSON.stringify(qrParams); }, //添加群聊 addGroup(params){ let qrParams = {}; qrParams.user_id = params.user_id; qrParams.action = 'group_add'; qrParams.list_id = params.list_id; qrParams.type = 1; return JSON.stringify(qrParams); }, //添加好友 chatAdd(params){ let qrParams = {}; qrParams.user_id = params.user_id; qrParams.action = 'chat_add'; return JSON.stringify(qrParams); }, //跳转到某页 toPage(url,params){ let qrParams = {}; qrParams.action = 'toPage'; qrParams.url = url+'?'+pageParam(params); return JSON.stringify(qrParams); } } const checkEmail = (email)=>{ return RegExp(/^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/).test(email); } const checkMobile = (mobile)=>{ return RegExp(/^1[3456789]\d{9}$/).test(mobile); } const getRoute = () =>{ let routes = getCurrentPages(); // 获取当前打开过的页面路由数组 return routes[routes.length - 1].route //获取当前页面路由 } export default { pageParam, getSystemPhone, getSystemMesage, pushLocalMsg, pushVedioLocalMsg, scanCode, imgPreview, saveMpImg, saveImgToLocalByUrl, saveImgToPhotos, capture, onFireBeforeBack, qrAction, checkEmail, checkMobile, uniCopy, getRoute }