/**
|
* 通用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
|
}
|