| /** | 
|  * 通用js | 
|  */ | 
|   | 
| var debugHost='www.baidu.com'; | 
|   | 
| // 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 | 
|           //  'host':'www.jyymatrix.cc' | 
|           }, | 
|           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', | 
|       'debugHost':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, | 
|                   'debugHost':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', | 
|           'debugHost':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 | 
| } |