//封装好一系列常用的方法 dever import config from './config'; //http网络请求 var http = { //token的key token : 'signature', //获取token getToken: function() { return uni.getStorageSync('prev1_' + this.token); }, //设置token setToken: function(value) { return uni.setStorageSync('prev1_' + this.token, value); }, //设置http的option option: function(options) { if (!options) { options = {}; } options[this.token] = this.getToken(); options['json'] = 1; return options; }, //request请求 request: function(vue, url, options, callback, err_callback, type) { var self = this; if (vue == 'post') { config.request.method = 'POST'; //config.request.method = 'GET'; vue = false; } else { config.request.method = 'GET'; } var method = config.request.method; if (typeof(url) == 'object') { vue = url[1]; url = url[0]; } if (typeof(vue) == 'object') { vue.isDisabled = true; } self.core(url, options, type, method).then((result, state) => { if (typeof(vue) == 'object') { if (!vue.fetch) { vue.fetch = {} } vue.isDisabled = false; vue.fetch = Object.assign({}, vue.fetch, result) } if (callback) { callback(result, state); } }).catch((result) => { if (typeof(vue) == 'object') { vue.isDisabled = false; } if (err_callback) { err_callback(result); } else { if (result.code == '2') { dever.location(dever.login); } else { dever.alert(result.msg) } } }) }, core : function(url, options, type, method) { var self = this; options = this.option(options); if (!options.noconcat) { options.noconcat = false; } if (config.server[url]) { config.request.url = config.server[url]; } else { config.request.url = url; } var loading_method = config.request.method; if (options && options.page && options.page > 0) { options.pg = options.page; loading_method = 'page'; } if (config.request.url.indexOf('http') == -1) { if (type == 'im') { config.request.url = config.im.api + config.request.url; } else { config.request.url = config.request.host + config.request.url; } } config.request.data = options; return new Promise((resolve, reject) => { config.request.complete = (response) => { dever.debug(response); if (response.statusCode === 200) { if (response.data.code == '0') { if (response.data.page) { dever.pageData = response.data.page; } else { dever.pageData = {}; } if (options.page && options.page > 0 && !options.noconcat) { page.state = true; if (page.key && response.data.data[page.key].length > 0) { if (options && options.concat && options.concat == -1) { page.data = response.data.data[page.key].concat(page.data); } else { page.data = page.data.concat(response.data.data[page.key]); } response.data.data[page.key] = page.data; } else if (response.data.data.length > 0) { if (options && options.concat && options.concat == -1) { response.data.data = response.data.data.reverse(); page.data = response.data.data.concat(page.data); } else { page.data = page.data.concat(response.data.data); } response.data.data = page.data; } else { page.state = false; if (page.key) { if (options && options.concat && options.concat == -1) { response.data.data[page.key] = page.data; resolve(response.data.data, false); } else { resolve(response.data.data[page.key], false); } } else { if (options && options.concat && options.concat == -1) { response.data.data = page.data; } resolve(response.data.data, false); } if (options && options.noloading) { } else { dever.hideLoading(loading_method, options, url); } return; } } resolve(response.data.data); } else if (response.data.code == '-1') { //退出登录 self.setToken(''); dever.location('index/index', 'go'); reject(response.data) } else if (response.data.code == '-2') { //跳转到登录页面 self.setToken(''); dever.checkLogin(); /* self.setToken(''); dever.location('index/index', 'go'); reject(response.data) */ } else { reject(response.data) } if (options && options.noloading) { } else { dever.hideLoading(loading_method, options, url); } } else { // 处理catch 请求,不在本页面之外处理,统一在这里处理 if (options && options.handle) { reject(response) } else { try { Promise.reject(response).catch(err => { self.error(response.statusCode || response.errMsg); }); } catch (e) { dever.alert(e) } } if (options && options.noloading) { } else { dever.hideLoading(loading_method, options, url); } } } //uni.request(Object.assign({}, config, options)); dever.debug(config.request); if (options.noloading) { uni.stopPullDownRefresh(); } else { dever.loading(loading_method, options, url); } uni.request(config.request); }) }, error : function(err) { //console.error("请求背拒绝" + err) /* dever.data('web_error', err); var path = '/components/dever/pages/web_error'; uni.navigateTo({ url: path }) return; */ switch (err) { case 401: // 错误码404的处理方式 console.error("请求拒绝" + err) break; case 404: // 错误码404的处理方式 console.error("没有找到页面" + err) break; case 500: // 错误码404的处理方式 console.error("500服务器错误" + err) break; case 405: console.error("错误的请求" + err) break; } }, } var im = { socket : {}, status : false, //host url : 'ws://me.5dev.cn:8282', //推送路径 push_path : '', init : function(key, url, callback, connect) { if (url) { this.url = url; } else { this.url = config.im.host; } this.connect(key, callback, connect); }, connect : function(key, callback, connect) { var self = this; this.close(key); this.socket[key] = uni.connectSocket({ url: this.url, complete: (res)=> { } }); this.socket[key].onOpen(function (res) { if (connect) { connect(true, res); } console.info('open'); self.status = true; self.socket[key].onMessage(function (res) { if (res.data.indexOf('{') != -1) { var data = eval("("+res.data+")"); } else { var data = res.data; } if (callback) { callback(data); } }); }); this.socket[key].onClose(function (res) { if (connect) { connect(false, res); } console.info('close'); self.status = false; }); this.socket[key].onError(function (res) { console.info('error'); self.connect(callback, connect); }); }, close : function(key) { var self = this; if (this.socket[key]) { this.socket[key].close({ success(res) { self.status = false; }, fail(err) { self.status = true; } }) } }, get : function(vue, url, options, callback, err_callback) { this.request(vue, url, options, callback, err_callback); }, post : function(url, options, callback, err_callback) { this.request('post', url, options, callback, err_callback); }, request : function(vue, url, options, callback, err_callback) { if (!options) { options = {}; } var param = options; param.noloading = 1; dever.post(this.push_path, param, function(t) { url += '?timestamp=' + t.timestamp + '&pop_token=' + t.token + '&login_uid=' + t.login_uid; dever.config.im = t; options.login_uid = t.login_uid; if (t.friend_uid) { options.friend_uid = t.friend_uid; } delete options.noloading; http.request(vue, url, options, callback, err_callback, 'im'); }); } } var page = { //分页控制 value : 1, //分页数据 data : [], //分页所属的key key : '', //分页状态 true可以分页,false不能分页 state : true, //通用的获取数据方法:瀑布流分页 (1,'level') get : function(config, vue, url, options, callback, err_callback) { options = http.option(options); if (typeof(config) == 'object') { var state = config[0]; this.key = config[1]; } else { var state = config; this.key = ''; } if (state == 1) { this.value = 1; this.data = []; } else { this.value++; } if (this.state == false && state != 1) { return; } options.page = this.value; http.request(vue, url, options, callback, err_callback); }, } var upload = { data : {}, formatDate : function(date) { var date = new Date(date); var YY = date.getFullYear() + '-'; var MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; var DD = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()); var hh = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'; var mm = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':'; var ss = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()); return YY + MM + DD +" "+hh + mm + ss; }, handle : function(key, count, callback) { var self = this; count = parseInt(count); uni.chooseImage({ count: count, sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有 sourceType: ['album'], //从相册选择 success: res => { uni.showLoading(); res.tempFilePaths.forEach(function(item, index) { //请求上传接口 self.uploadFile(item, key, count, callback); }); }, fail: () => { uni.showToast({ title: '图片上传失败,请重试', icon: 'none' }); uni.hideLoading(); } }); }, uploadFile : function(item, key, count, callback) { var self = this; if (!count) { count = 1; } var type = 1; if (count > 1) { type = 2; } uni.uploadFile({ url: config.upload.url, filePath: item, name: config.upload.name, formData: { token: http.getToken() }, success: res => { dever.debug(res); var data = JSON.parse(res.data); uni.hideLoading(); if (data.uploaded) { var backUrl = data.url; if (count > 1) { if (!self.data[key]) { self.data[key] = []; } if (self.data[key].length < count) { self.data[key].push(backUrl); } } else { self.data[key] = backUrl; } if (callback) { callback(type, self.data[key]); } } else if (data.uploaded == false) { uni.showToast({ title: data.error.message, icon: 'none' }); } } }); }, upfile : function(e, key, count, callback, ext, title, style) { if (!count) { count = 1; } var type = 1; if (count > 1) { type = 2; } if (!title) { title = '点击这里上传文件'; } var self = this; count = parseInt(count); var a = document.createElement('button'); a.className = 'file'; if (style) { a.style.cssText = style; } else { a.style.cssText = 'padding: 4px 10px;height: 20px;line-height: 20px;position: relative;cursor: pointer;color: #888;background: #fafafa;border: 1px solid #ddd;border-radius: 4px;overflow: hidden;display: inline-block;*display: inline;*zoom: 1;'; } var style = 'position: absolute;opacity: 0;filter: alpha(opacity=0);cursor: pointer'; a.innerHTML = '' + title; e.$refs.input.$el.appendChild(a) var input = document.getElementById('upload_file'); input.onchange = (event) => { uni.showLoading(); var reader = new FileReader(); var type = input.files[0].type; var temp = type.split('/'); type = temp[1]; //console.info(input.files[0]); if (ext && ext.indexOf(type) == -1) { uni.showToast({ title: '您上传的文件类型错误,请上传带有' + ext + '这些后缀的文件', icon: 'none' }); } else { reader.readAsDataURL(input.files[0]); reader.onload = function(){ //读取完成后,数据保存在对象的result属性中 var pic = this.result; var temp = pic.split('base64,'); pic = temp[1]; dever.debug(pic); var url = "http://up.qiniu.com/putb64/-1"; var xhr = new XMLHttpRequest(); xhr.onreadystatechange=function(){ if (xhr.readyState==4){ dever.debug(xhr.responseText); var data = JSON.parse(xhr.responseText); uni.hideLoading(); if (data.uploaded) { var backUrl = data.url; if (count > 1) { if (!self.data[key]) { self.data[key] = []; } self.data[key].push(backUrl); } else { self.data[key] = backUrl; } if (callback) { callback(type, self.data[key], input.files[0]); } } else if (data.uploaded == false) { uni.showToast({ title: data.error.message, icon: 'none' }); } } } xhr.open("POST", url, true); xhr.setRequestHeader("Content-Type", "application/octet-stream"); xhr.setRequestHeader("Authorization", "UpToken " + e.token); xhr.send(pic); } } } }, qnUpload : function(qn, config, key, count, callback) { if (!count) { count = 1; } var type = 1; if (count > 1) { type = 2; } var self = this; count = parseInt(count); var call = function(data) { var backUrl = data.url; if (count > 1) { if (!self.data[key]) { self.data[key] = []; } self.data[key].push(backUrl); } else { self.data[key] = backUrl; } if (callback) { callback(type, self.data[key]); } } uni.chooseImage({ count: count, //sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有 sizeType: ['compressed'], //可以指定是原图还是压缩图,默认二者都有 sourceType: ['album'], //从相册选择 success: res => { uni.showLoading(); res.tempFilePaths.forEach(function(item, index) { self.qiniu(qn, item, config.domain, config.token, call); }); }, fail: () => { uni.showToast({ title: '图片上传失败,请重试', icon: 'none' }); uni.hideLoading(); } }); }, qiniu : function(qn, file, domain, token, call, handle) { //请求上传接口 var config = {}; config = { region: 'ECN', domain: domain, //key: 'test.mp4', }; if (token.indexOf('http') == -1) { config.uptoken = token; } else { config.uptokenURL = token; } uni.showLoading({title: '上传中', mask: true}); qn.upload( file, res => { dever.debug(res); var data = res; uni.hideLoading(); if (data.uploaded) { call(data); } else { uni.showToast({title: data.error.message, icon: 'none' }); } }, error => { uni.showToast({title: '上传失败,请重试', icon: 'none' }); uni.hideLoading(); }, config, res => { //上传进度 if (handle) { handle(res.progress); } else { uni.showToast({title: '上传进度:%' + res.progress, icon: 'none' }); } } ); }, uploadDel : function(key, index, callback) { var self = this; uni.showModal({ content: '确定要删除吗?', cancelText: '取消', confirmText: '确定', success: res => { if (res.confirm) { // self.data[key].splice(index, 1); if (callback) { callback(res, index); } } } }); } } var share = { wechat : false, url : '', project : '', token : '', param : { title : '', pic : '', content : '', link : '', }, wx : {}, init : function(wx, project, host, param) { var self = this; self.wx = wx; self.wechat = dever.is_weixin(); self.project = project; self.url = host; if (!host) { self.url = config.share.host; } self.token = http.getToken(); self.param = param; self.param.timelineCallback = function() {}; self.param.sendMessageCallback = function() {}; self.param.shareQQCallback = function() {}; if (!self.param.source_link) { self.param.source_link = location.href; } if (self.wechat) { self.wechatInit(); } self.reflux(); } ,wechatInit: function() { var self = this; var url = this.url + 'init?callback=?'; var param = this.param; var project = this.project; var options = {}; options.project = project; options.url = location.href.split('#')[0]; options.noloading = 1; options.token = this.token; http.request('post', url, options, function(data) { self.wx.config({ //debug:true, appId: data.appId, timestamp: data.timestamp, nonceStr: data.nonceStr, signature: data.signature, jsApiList: [ 'onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'updateAppMessageShareData', 'updateTimelineShareData' ] }); self.wx.ready(function() { self.wx.updateAppMessageShareData({ title: param.title, desc: param.content, link: param.source_link, imgUrl: param.pic, success: function(res) { }, }); self.wx.updateTimelineShareData({ title: param.title, link: param.source_link, imgUrl: param.img, success: function(res) { }, }); self.wx.onMenuShareAppMessage({ title: param.title, desc: param.content, link: param.source_link, imgUrl: param.pic, success: function(res) { self.shareLog(1, 1); }, cancel: function(res) { self.shareLog(1, 2); }, fail: function(res) { self.shareLog(1, 3); } }); self.wx.onMenuShareTimeline({ title: param.title, link: param.source_link, imgUrl: param.img, success: function(res) { self.shareLog(2, 1); }, cancel: function(res) { self.shareLog(2, 2); }, fail: function(res) { self.shareLog(2, 3); } }); self.wx.onMenuShareQQ({ title: param.title, link: param.source_link, imgUrl: param.img, success: function(res) { self.shareLog(3, 1); }, cancel: function(res) { self.shareLog(3, 2); }, fail: function(res) { self.shareLog(3, 3); } }); }); }); } ,reflux: function() { var refer = document.referrer, url = encodeURIComponent(document.location.href), param = location.search.substr(1), ua = encodeURIComponent(navigator.userAgent), project = this.project, token = this.token, wechat = this.wechat; if (param.indexOf("tsina-") > -1 || param.indexOf("timeline") > -1 || param.indexOf("singlemessage") > -1 || param.indexOf("groupmessage") > -1) { var url = this.url + 'reflux&callback=?' + '&project='+project+'&url=' + url + '&ua=' + ua + '¶m=' + encodeURIComponent(param) + '&token=' + token + '&type=' + wechat; http.request('post', url, {noloading:1}); } } ,shareLog: function(actType, actResult) { var project = this.project; var token = this.token; var wechat = this.wechat; var ua = encodeURIComponent(navigator.userAgent); var url = encodeURIComponent(document.location.href); var url = this.url + 'collect&callback=?' + '&project='+project+'&url=' + url + '&actType=' + actType + '&actResult=' + actResult + '&ua=' + ua + '&token=' + token + '&type=' + wechat http.request('post', url, {noloading:1}); } } var bgm = { show : false, playing : false, manager : false, control : false, dever : false, vue : false, init : function(vue, music, title, signer, pic, autoplay) { if (this.manager) { return; } this.vue = vue; this.vue.bgm = { show : false, playing : false, }; if (music) { this.show = true; this.vue.bgm.show = true; if (this.dever.source == 'h5') { this.manager = uni.createInnerAudioContext() this.manager.src = music; this.manager.obeyMuteSwitch = false; this.manager.loop = true; } else { this.manager = uni.getBackgroundAudioManager() this.manager.title = title; this.manager.singer = signer; this.manager.coverImgUrl = pic; this.manager.src = music; this.manager.loop = true; } if (autoplay == 1) { if (this.dever.source == 'h5') { this.manager.autoplay = true; this.start(); } else { this.start(); } } else { this.stop(); } } else { this.show = false; this.vue.bgm.show = false; } }, control : function() { if (this.playing) { this.stop(); } else { this.start(); } }, start : function() { if (this.manager) { if (this.vue.control) { var i = 0; for (i in this.vue.control) { if (this.vue.control[i].load) { this.vue.control[i].stop(); } } } this.manager.play(); this.playing = true; this.vue.bgm.playing = true; } }, stop : function() { if (this.manager) { this.manager.pause(); this.playing = false; this.vue.bgm.playing = false; } } }; var dever = { login : 'user/login', web_view : '/lib/dever/pages/web_view', source : 'h5', source_id : 1, host : '', api_host : '', doc : false, config : {}, vue : false, cur : false, getLoadingState : {}, getLoadingCall : false, postLoadingCall : false, pageLoadingCall : false, pageData : {}, lastGetUrl : '', showLoad : false, btnText : '确定提交', switchTab : [], switchTabCall : {}, slideValue : {}, //获取当前时间戳 curTime : function() { var time = Date.parse(new Date())/1000; return time; }, //载入全局配置 init : function(url, vue, value, set) { this.vue = vue; vue.prototype.$config = value; var self = this; this.api_host = config.request.host; var dever_config = self.data('dever_config'); var state = false; if (dever_config && !set) { self.config = dever_config; vue.prototype.$config = self.config; if (self.config.update_time) { var time = this.curTime(); if (!self.config.update_time || time - self.config.update_time >= value.set_update) { state = true; } } else { state = false; } } else { state = true; } if (state) { this.setConfig(url, value); } return this; }, //设置全局变量 setConfig : function(url, config, key, value) { var self = this; if (!config && key && value) { config = self.data('dever_config'); config[key] = value; } self.config = config; self.vue.prototype.$config = self.config; self.data('dever_config', self.config); if (url) { self.post(url, {noloading:1}, function(t) { self.config = t; self.config.update_time = self.curTime(); self.data('dever_config', self.config); self.vue.prototype.$config = self.config; }); } }, //加载通用的方法 common : function(func) { this.source = 'h5'; this.source_id = 1; this.host = ''; //#ifdef H5 this.source = 'h5'; this.source_id = 1; this.host = window.location.protocol + '//' + window.location.host + '/web/#'; //#endif //#ifdef APP-PLUS this.source = uni.getSystemInfoSync().platform; if (this.source == 'ios') { this.source_id = 3; } else { this.source_id = 2; } //#endif //#ifdef MP-WEIXIN this.source = 'wx_applet'; this.source_id = 5; //#endif if (func) { for (var i in func) { this.vue.prototype[i] = func[i]; } } }, //设置提交的按钮 btnLoad : function(cur) { if (!cur) { cur = this.cur; } if (!cur) { return; } cur.btn = this.btn(cur); }, //设置提交的按钮 btnFinish : function() { var cur = this.cur; if (!cur) { return; } cur.btn = { disabled:false, loading:false, text:this.btnText, }; }, //设置提交的按钮 btn : function(cur, text) { this.cur = cur; if (text) { this.btnText = text; } return { disabled:true, loading:true, text:'加载中...', }; }, //设置loading setGetLoading : function(yes, no) { this.getLoadingCall = {'yes': yes, 'no' : no}; }, setPostLoading : function(yes, no) { this.postLoadingCall = {'yes': yes, 'no' : no}; }, setPageLoading : function(yes, no) { this.pageLoadingCall = {'yes': yes, 'no' : no}; }, //获取当前route route : function() { var page = this.getPage(); if (!page) { return ''; } var route = page.route; return route; }, //获取当前param param : function() { var page = this.getPage(); if (!page) { return ''; } var options = page.options; return options; }, //获取当前url url : function() { var page = this.getPage(); if (!page) { return ''; } var route = page.route; var options = page.options; // 拼接参数 let param = [] if (options) { for (let key in options) { param.push(key + '=' + options[key]); } } param = param.join('&'); if (param) { param = '?' + param; } return '/' + route + param; }, //获取当前page getPage : function() { var pages = getCurrentPages(); if (pages.length > 0) { return pages[pages.length - 1]; } else { return false; } }, //loading loading : function(method, options, url) { var state = false; if (method == 'POST') { if (this.postLoadingCall && this.postLoadingCall.yes) { state = true; var callback = this.postLoadingCall.yes; callback(this); } } else if (method == 'page') { //state = true; if (options.page && options.page > 1) { state = false; } if (this.pageLoadingCall && this.pageLoadingCall.yes) { state = true; var callback = this.pageLoadingCall.yes; callback(this); } } else { url = this.route(); if (this.lastGetUrl && this.lastGetUrl != url && this.getLoadingState[this.lastGetUrl]) { this.getLoadingState[this.lastGetUrl] = false; } if (this.getLoadingState && this.getLoadingState[url]) { state = false; } else { if (this.getLoadingCall && this.getLoadingCall.yes) { state = true; var callback = this.getLoadingCall.yes; callback(this); } } } if (!state) { var title = '加载中'; if (method == 'POST') { title = '提交中'; } uni.showLoading({title: title, mask: true}); //uni.showNavigationBarLoading(); this.showLoad = true; } uni.stopPullDownRefresh(); }, //取消loading hideLoading : function(method, options, url) { var state = false; if (method == 'POST' || method == 'post') { if (this.postLoadingCall && this.postLoadingCall.no) { state = true; var callback = this.postLoadingCall.no; callback(this); } } else if (method == 'page') { //state = true; if (options.page && options.page > 1) { state = false; } if (this.pageLoadingCall && this.pageLoadingCall.no) { state = true; var callback = this.pageLoadingCall.no; callback(this); } } else { url = this.route(); if (!this.lastGetUrl || (this.lastGetUrl && this.lastGetUrl != url)) { this.lastGetUrl = url; } if (this.getLoadingState && this.getLoadingState[url]) { state = false; } else { this.getLoadingState[url] = true; if (this.getLoadingCall && this.getLoadingCall.no) { state = true; var callback = this.getLoadingCall.no; callback(this); } } } if (!state && this.showLoad) { uni.hideLoading(); this.showLoad = false; this.btnFinish(); //uni.hideNavigationBarLoading(); } }, //data数据获取 dataset : function(e) { if (e.currentTarget) { var dataset = e.currentTarget.dataset; } else { var dataset = e.target.dataset; } return dataset; }, //view中的页面提示 viewAlert : function(e) { if (e) { var dataset = this.dataset(e); var msg = dataset.msg; var icon = dataset.icon; var callback = dataset.callback; this.alert(msg, icon, callback); } else { this.alert('敬请期待'); } }, //view中的页面跳转 viewLocation : function(e) { var page = ''; var to = ''; var option = ''; if (e) { var dataset = this.dataset(e); page = dataset.page; to = dataset.to; option = [] for (var i in dataset) { if (i.indexOf('save_') != -1) { var v = dataset[i]; i = i.replace('save_', ''); this.data(i, v); } else if (i != 'page' && i != 'to') { option.push(i + '=' + dataset[i]); } } if (option) { option = option.join('&'); } } if (!page) { uni.navigateBack({}); } else { var go = ''; if (to) { go = 'to'; } if (option) { page = page + '?' + option; } this.location(page, go); } }, //页面跳转 location : function(path, go, title) { var self = this; if (path.indexOf('http') > -1) { this.debug('http:' + path); this.data('web_view', path); if (title) { this.data('web_view_title', title); } if (this.source == 'app' || this.source == 'applet' || go == 'webview') { uni.navigateTo({ url: this.web_view }) } else { if (!go) { go = ''; } if (go && go == 'location') { window.location.href = path; } else { var url = window.location.href; if (go.indexOf('/') != -1) { url = this.host + go } else { url = url + go; } url = window.btoa(url); if (path.indexOf('?') == -1) { path = path + '?'; } else { path = path + '&'; } window.location.href = path + 'refer=' + url; } } } else { this.debug('navigateTo:' + go + ':' + path); if (path.indexOf('/pages/') == -1) { path = '/pages/' + path; } if (this.switchTab.indexOf(path) != -1) { uni.switchTab({ url: path, success: function(e) { if (self.source != 'app' && self.switchTabCall[path]) { var call = self.switchTabCall[path]; call(self, e); } } }) } else if (go && go != 'webview') { uni.redirectTo({ url: path }) } else { uni.navigateTo({ url: path }) } } }, //提示信息 alert : function(info, icon, callback) { if (!icon) { icon = 'none' } if (info) { uni.showToast({title: info, icon: icon}); } this.debug('alert:' + info) if (callback) { this.debug('callback:' + callback) setTimeout(function(){ callback(); }, 1000) } }, //询问信息 confirm : function(text, callback) { uni.showModal({ content: text, cancelText: '取消', confirmText: '确定', success: res => { if (res.confirm) { callback(); } } }); }, //debug调试 debug : function(string) { if (config.base.debug) { this.log(string); } }, //记录日志 log : function(string) { console.log(string); }, //获取token getToken: function() { return http.getToken(); }, //设置token setToken: function(value) { return http.setToken(value); }, //通用的提交数据的方法 post : function(url, options, callback, err_callback) { http.request('post', url, options, callback, err_callback); }, //通用的获取数据方法 get : function(vue, url, options, callback, err_callback) { http.request(vue, url, options, callback, err_callback); }, //通用的获取数据方法 page : function(config, vue, url, options, callback, err_callback) { page.get(config, vue, url, options, callback, err_callback); }, //选择图片并上传 upload : function(id, count, callback) { this.getUpload().handle(id, count, callback); }, //上传到七牛 qiniu : function(qn, self, id, count, callback, handle) { this.getUpload().qiniu(qn, self, id, count, callback, handle); }, //html上传文件 upfile : function(self, key, count, callback, ext, title, style) { this.getUpload().upfile(self, key, count, callback, ext, title, style); }, //直接上传文件 uploadFile : function(path, id, count, callback) { this.getUpload().uploadFile(path, id, count, callback); }, //获取upload getUpload : function() { return upload; }, //im聊天 im : function(key, url, callback, connect) { im.init(key, url, callback, connect); }, //im聊天关闭 im_close : function(key) { im.close(key); }, //im聊天 get请求 im_get : function(vue, url, options, callback, err_callback) { im.get(vue, url, options, callback, err_callback); }, //im聊天 post请求 im_post : function(url, options, callback, err_callback) { im.post(url, options, callback, err_callback); }, //删除上传 uploadDel : function(id, index, callback) { upload.uploadDel(id, index, callback); }, //验证登录 checkLogin : function(refer) { if (!this.getToken()) { this.goLogin(refer); } }, //去登录 goLogin : function(refer) { this.data('login_refer', this.getRefer(refer)); //this.hideLoading(); if (this.source == 'h5') { this.location(this.login, 'go'); } else { this.location(this.login, 'go'); } }, //获取refer getRefer : function(refer) { if (!refer) { refer = this.url(); } return refer; }, //数据存储 data : function(key, value) { if (value) { if (value == 'del') { uni.removeStorageSync(key); return true; } else { uni.setStorageSync(key, value); return value; } } else { return uni.getStorageSync(key); } }, //插入html代码,初始化 initHtml : function(doc) { this.doc = doc.$refs.initHtml.$el; }, //插入html代码 html : function(html) { var self = this; var div = document.createElement('div'); div.innerHTML = html; this.doc.appendChild(div); var scripts = div.querySelectorAll('script'); return Array.prototype.slice.apply(scripts).reduce((chain, script) => { return chain.then(() => self.runScript(script)); }, Promise.resolve()); }, //微信提醒 wxTip : function(type) { var wx = this.is_weixin(); if (wx) { var img = 'live_weixin'; if (type) { img = 'weixin-guide'; } var tip = '