const app_info = require("@/static/appInfo.js"); const api_host = app_info.api_host const version = app_info.version const api_prefix = api_host + '/addons/exam/' //工具类 module.exports = { timestamp() { return parseInt(new Date().getTime() / 1000); }, cons_log(...params) { for (let p of params) { console.log(p); } }, cons_log_json(...params) { for (let p of params) { console.log(JSON.stringify(p)); } }, goto(url) { uni.navigateTo({ url: url }); }, goreto(url) { uni.redirectTo({ url: url }); }, gotore(url) { uni.reLaunch({ url: url }); }, goback(delta = 1) { uni.navigateBack({ delta: delta }); }, toast(msg, icon = 'none', duration = 2000, mask = false, image = '') { uni.showToast({ title: msg, icon: icon, duration: duration, mask: mask, image: image }) }, alert(content, callBack) { uni.hideLoading(); uni.showModal({ content: content, showCancel: false, success: function() { if (callBack != undefined) { callBack(); } } }) }, getData(key, is_clear = false) { var value = uni.getStorageSync(key); if (is_clear) { uni.setStorageSync(key, ''); } // console.log('get cache', key, value) return value; }, setData(key, value) { // console.log('set cache', key, value) uni.setStorageSync(key, value); }, array_column(obj, key) { var objects = []; for (var i in obj) { if (!obj.hasOwnProperty(i)) continue; if (typeof obj[i] == 'object') { objects = objects.concat(this.array_column(obj[i], key)); } else if (i == key) { objects.push(obj[i]); } } return objects; }, shuffle(arr) { var l = arr.length var index, temp while (l > 0) { index = Math.floor(Math.random() * l) temp = arr[l - 1] arr[l - 1] = arr[index] arr[index] = temp l-- } return arr }, // 秒数转时分秒格式 sec_to_time(s) { var t; if (s > -1) { var hour = Math.floor(s / 3600); var min = Math.floor(s / 60) % 60; var sec = s % 60; if (hour < 10) { t = '0' + hour + ":"; } else { t = hour + ":"; } if (min < 10) { t += "0"; } t += min + ":"; if (sec < 10) { t += "0"; } t += sec.toFixed(2); } return t; }, login() { var token = this.getData('token'); var user = this.getData('user'); if (!token || !user) { const pages = getCurrentPages() const currentPage = pages[pages.length - 1] const url = currentPage.route const options = currentPage.options let urlWithArgs = `/${url}?` for (let key in options) { const value = options[key] urlWithArgs += `${key}=${value}&` } urlWithArgs = urlWithArgs.substring(0, urlWithArgs.length - 1) uni.setStorageSync('route', urlWithArgs); console.log('没有缓存数据,需先授权') uni.redirectTo({ url: "/pages/login/login" }) return; } return true; }, /** * rich-text富文本中图片宽度最大100% * @param {String} html */ formatRichText(html) { // 去掉img标签里的style、width、height属性 let content_data= html.replace(/]*>/gi, function(match,capture) { match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, '') match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, '') match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, '') return match }) // 修改所有style里的width属性为max-width:100% content_data = content_data.replace(/style="[^"]+"/gi,function(match,capture){ match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi, 'max-width:100%;') return match }) // 去掉
标签 content_data = content_data.replace(/]*\/>/gi, '') // img标签添加style属性:max-width:100%;height:auto content_data = content_data.replace(/\} */ http(handler, path, data = {}, method = 'post', showLoading = true) { let url = api_prefix + path let timestamp = Date.parse(new Date()) if (typeof(data) == 'object') { data['timestamp'] = timestamp } if (showLoading) { uni.showLoading({ title: '加载中..', mask: true }) } return new Promise((resolve, reject) => { uni.request({ url: url, method: method, data: data, header: { 'content-type': 'application/json', 'token': this.getData('token'), 'app-version': version }, success: (res => { console.log('http res', res) if (res.statusCode == 200) { resolve(res.data) } else { console.log('http statusCode', res.statusCode) uni.showToast({ title: res.data.message, icon: 'none' }) // 未登录 if (res.statusCode == 401) { // console.log('this.$refs', this.$refs) // this.$refs.login.modal = true // uni.$emit('uniLogin', handler) handler.$refs.login.modal = true // handler.$refs.login.afterMethod = () => { // this.http(handler, path, data) // } } // reject(res.data); } }), fail: (res => { console.log(res) return false; }), complete: (res => { showLoading && uni.hideLoading() }) }) }) }, /** * 上传文件 * @returns {Promise<*>} */ uploadFile(handler, filePath, data = {}, fileType = 'image', showLoading = true) { if (showLoading) { uni.showLoading({ title: '加载中..', mask: true }) } return new Promise((resolve, reject) => { uni.uploadFile({ url: api_prefix + 'common/upload', header: { 'token': uni.getStorageSync('token'), "Content-Type": "multipart/form-data" }, fileType: fileType, filePath: filePath, formData: data, name: 'file', success: (res) => { console.log('upload res', res) let data = JSON.parse(res.data) if (res.statusCode == 200) { resolve(data) } else { console.log('upload statusCode', res.statusCode) uni.showToast({ title: data.message, icon: 'none' }) // 未登录 if (res.statusCode == 401) { handler.$refs.login.modal = true } } }, fail: (res) => { console.log('fail res', res) return false; }, complete: (res => { showLoading && uni.hideLoading() }) }) }) }, };