/** * 通用js */ var debugHost='taiyan'; // api地址,请求参数,回调函数,是否遮罩 function request(params) { var option = { method: "POST", mask: false, //检查登录 checkLogin: false, } //合并参数 option = Object.assign(option, params); //遮罩 if (option.mask) { wx.showLoading({ title: "加载中...", mask: true }); } if (params.checkLogin) { console.log("用户登录调用"); wx.login({ success: function(res) { wx.request({ url: getApp().baseUrl + '/wxapi/user/login/' + res.code, method: "POST", header: { 'content-type': 'application/json', //'debugHost':debugHost, 'companyCode':'debugHost' }, data: {}, success: function(res) { if (res.data.status == "200") { console.log("登录成功"); getApp().loginToken = res.data.mapInfo.token; getApp().userInfo = res.data.mapInfo.userInfo; getApp().isLogin = true; wx.hideLoading(); //登录后触发请求 doRequest(option); } else { wx.showToast({ title: res.data.info, icon: "none" }); wx.hideLoading() } wx.hideLoading() }, //失败处理 fail: function(res) { wx.showToast({ title: "网络请求异常", icon: "none" }); } }) } }); } else { console.log("用户未登录调用"); doRequest(option); } } function doRequest(option) { var data = option.data ? option.data : {}; wx.request({ url: getApp().baseUrl + option.api, method: option.method, header: { 'content-type': 'application/json', 'companyCode':debugHost, 'token': getApp().loginToken }, data: data, success: function(res) { if (res.data.status == "200") { //请求成功 if (option.callback) { option.callback(res.data); } } else { console.log("请求失败回调") wx.showToast({ title: res.data.info, icon: "none", duration: 2000 }); if (option.failCallback) { option.failCallback(res.data); } } //关闭遮罩 if (option.mask) { wx.hideLoading() } }, //网络异常失败处理 fail: function(res) { console.error(res); wx.showToast({ title: "网络请求异常", icon: "none" }); //关闭遮罩 if (option.option.mask) { wx.hideLoading() } } }) } //上传文件 function uploadImage(param, callBack) { // 覆盖初始化参数 var sizeType = param.sizeType ? param.sizeType : ['compressed']; var sourceType = param.sourceType ? param.sourceType : ['album', 'camera']; var count = param.count ? param.count : 1; //文件上传地址 var uploadUrl = param.uploadUrl ? param.uploadUrl : '/wxapi/uploadFile/doUpload'; uploadUrl = getApp().baseUrl + uploadUrl; //默认传参 var formData = param.uploadUrl ? param.uploadUrl : {}; //选择照片 wx.chooseImage({ count: count, sizeType: sizeType, sourceType: sourceType, success: function(res) { //开始上传 var tempFilePaths = res.tempFilePaths wx.showToast({ icon: "loading", title: "正在上传" }), wx.getStorage({ key: 'token', success: function(res) { for (var i = 0; i < tempFilePaths.length; i++) { wx.uploadFile({ url: uploadUrl, filePath: tempFilePaths[i], name: 'file', header: { "Content-Type": "multipart/form-data", 'token': res.data, 'companyCode':debugHost }, formData: formData, success: function(e) { console.log("上传完成", e); if (e.statusCode != 200) { wx.showModal({ title: '提示', content: '上传失败', showCancel: false }) return; } var data = JSON.parse(e.data) //上传返回值 if (data.status == '200') { var url = data.mapInfo.url console.log("上传成功的图片路径:" + url); callBack(data); } }, fail: function(e) { console.log(e); wx.showModal({ title: '提示', content: '上传失败', showCancel: false }) }, complete: function() { wx.hideToast(); //隐藏Toast } }) } } }) } }) } /** * 表单验证 * 满足验证要求返回true,否者返回false */ function validForm(formData, rules) { //验证结果记录 var result = true; //定义一些默认的规则 var def_rules = { //手机号码 "$tel": { // "rule": /(^([0-9]{3,4}-)?[0-9]{7,8}$)|((\d{3}-\d{8}|\d{4}-\d{7})|(^1[358]\d{9}|173|176|177\d{8}$))/, "rule": /^1[3456789]\d{9}$/, "errmsg": "请输入正确的手机号码" } } //循环校验表单 for (var key in formData) { var value = formData[key]; var ruleObj = rules[key]; //跳过没有设置验证规则的属性 if (!ruleObj) { continue; } var rule = ruleObj.rule; var errmsg = ruleObj["errmsg"]; //判断是否为默认规则 if (def_rules[rule]) { rule = def_rules[ruleObj.rule].rule; } if (!errmsg) { errmsg = def_rules[ruleObj.rule].errmsg; } console.log("验证", value, rule); if (!rule.test(value)) { wx.showModal({ title: '提示', content: errmsg, showCancel: false, confirmText: "确定" }) result = false; break; } } //返回校验结果 return result; } /// 调用演示 validForm({ "tel": "1839044333" }, { "tel": { "rule":"$tel" , errmsg:"请输入正确的号码" } }) /** * 对象浅合并 */ function extend(o, n) { for (var p in n) { o[p] = n[p]; } return o; } /** * 用户登录 * url : 要跳转的绝对路径 */ function userLogin(callBack) { //调用微信登录刷新token console.log(callBack); wx.login({ success: function(res) { wx.request({ url: getApp().baseUrl + '/wxapi/user/login/' + res.code, method: "POST", header: { 'content-type': 'application/json', 'companyCode':debugHost }, data: {}, success: function(res) { if (res.data.status == "200") { console.log("登录成功"); getApp().loginToken = res.data.mapInfo.token; getApp().userInfo = res.data.mapInfo.userInfo; getApp().isLogin = true; wx.hideLoading(); console.log("执行回调请求1"); console.log(callBack); if (callBack) { console.log("执行回调请求2"); callBack(); } } else { wx.showToast({ title: res.data.info, icon: "none" }); wx.hideLoading() } wx.hideLoading() }, //失败处理 fail: function(res) { wx.showToast({ title: "网络请求异常", icon: "none" }); } }) } }); } function formatNumber(n) { n = n.toString(); return n[1] ? n : '0' + n; } /** * 时间戳转化为年 月 日 时 分 秒 * number: 传入时间戳 * format:返回格式,支持自定义,但参数必须与formateArr里保持一致 */ function formatTimeTwo(number, format) { var formateArr = ['Y', 'M', 'D', 'h', 'm', 's']; var returnArr = []; // console.log(number,typeof number); var date = new Date(number * 1000); // console.log(date, typeof date); returnArr.push(date.getFullYear()); returnArr.push(formatNumber(date.getMonth() + 1)); returnArr.push(formatNumber(date.getDate())); returnArr.push(formatNumber(date.getHours())); returnArr.push(formatNumber(date.getMinutes())); returnArr.push(formatNumber(date.getSeconds())); console.log(returnArr); for (var i in returnArr) { format = format.replace(formateArr[i], returnArr[i]); } return format; } // 防止多次点击 function buttonClicked(self) { self.setData({ buttonClicked: true }) setTimeout(function() { self.setData({ buttonClicked: false }) }, 500) } /** 获取时间 */ function dateFtt(date) { // console.log("data---------"); // console.log(date); // console.log(typeof date); return date.getFullYear() + "-" + setFomartZero((date.getMonth() + 1)) + "-" + setFomartZero(date.getDate()) + " " + setFomartZero(date.getHours()) + ":" + setFomartZero(date.getMinutes()); } function setFomartZero(date) { if (date < 10) { return "0" + date; } return date; } function goTap() { if (wx.pageScrollTo) { wx.pageScrollTo({ scrollTop: 0, }) } else { } } // 判断是否有emoji表情 function isEmojiCharacter(substring) { for (var i = 0; i < substring.length; i++) { var hs = substring.charCodeAt(i); if (0xd800 <= hs && hs <= 0xdbff) { if (substring.length > 1) { var ls = substring.charCodeAt(i + 1); var uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000; if (0x1d000 <= uc && uc <= 0x1f77f) { return true; } } } else if (substring.length > 1) { var ls = substring.charCodeAt(i + 1); if (ls == 0x20e3) { return true; } } else { if (0x2100 <= hs && hs <= 0x27ff) { return true; } else if (0x2B05 <= hs && hs <= 0x2b07) { return true; } else if (0x2934 <= hs && hs <= 0x2935) { return true; } else if (0x3297 <= hs && hs <= 0x3299) { return true; } else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50) { return true; } } } } //保存卡片 function savePicToAlbum(tempFilePath) { let that = this; wx.getSetting({ success(res) { if (!res.authSetting['scope.writePhotosAlbum']) { wx.authorize({ scope: 'scope.writePhotosAlbum', success() { wx.saveImageToPhotosAlbum({ filePath: tempFilePath, success(res) { wx.showToast({ title: '保存成功' }); }, fail(res) { console.log(res); } }) }, fail() { // 用户拒绝授权,打开设置页面 wx.openSetting({ success: function(data) { console.log("openSetting: success"); }, fail: function(data) { console.log("openSetting: fail"); } }); } }) } else { wx.saveImageToPhotosAlbum({ filePath: tempFilePath, success(res) { wx.showToast({ title: '保存成功', }); }, fail(res) { console.log(res); } }) } }, fail(res) { console.log(res); } }) } Date.prototype.Format = function(fmt) { //author: meizz var o = { "M+": this.getMonth() + 1, //月份 "d+": this.getDate(), //日 "h+": this.getHours(), //小时 "m+": this.getMinutes(), //分 "s+": this.getSeconds(), //秒 "q+": Math.floor((this.getMonth() + 3) / 3), "S": this.getMilliseconds() //毫秒 }; if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); for (var k in o) if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); return fmt; } /** * 给定秒数,格式化时间长度,输入单位秒数 */ function getTimeSpance(timeLength) { let time = { day : Math.floor(timeLength / ( 60 * 60 * 24)), //计算天数 hour: Math.floor(timeLength / (60 * 60) % 24), //计算小时数 minute: Math.floor(timeLength / ( 60) % 60), //计算分钟数 second: Math.floor(timeLength % 60) //计算秒数 }; return time; } function getOutStorage(key) { var obj = wx.getStorageSync(key); wx.removeStorageSync(key); return obj; } function isNotBlank(str) { if (str === undefined || str === null || str === "") { return false; } else { return true; } } function isBlank(str) { if (str === undefined || str === null || str === "") { return true; } else { return false; } } module.exports = { uploadImage: uploadImage, validForm: validForm, extend: extend, userLogin: userLogin, request: request, formatTimeTwo: formatTimeTwo, buttonClicked: buttonClicked, dateFtt: dateFtt, goTap: goTap, isEmojiCharacter: isEmojiCharacter, savePicToAlbum: savePicToAlbum, getOutStorage: getOutStorage, isNotBlank: isNotBlank, isBlank: isBlank, getTimeSpance: getTimeSpance }