hz-zhhq-app/common/util.js

662 lines
17 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//设置本都存储
const SETSTORAGE = function(key, val) {
uni.setStorage({
key: key,
data: val,
success: _ => {
console.log('设置成功')
}
})
}
console.log(wx, jWeixin)
let WXSDK = "";
if (wx.config) {
WXSDK = wx;
} else {
WXSDK = jWeixin;
}
console.log(WXSDK, "WXSDK");
// 微信公众号授权
const WXAUTHORIZE = function() {
let link = window.location.href;
// let params = this._getUrlParams(link); // 地址解析
let params = ''; // 地址解析
// 已经授权登录过的就不用再授权了
//if (store.state.token) return;
// 如果拿到code调用授权接口没有拿到就跳转微信授权链接获取
if (params.code) {
api.wxAuth(params.code); // 调用后台接口,授权
} else {
let appid = 'wx7d707414e4623461'; //sj wx7d707414e4623461 华中 wx61ecc513905e876a
let uri = encodeURIComponent(link);
let authURL =
`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${uri}&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect`;
window.location.href = authURL;
}
}
//获取本地存储
const GETSTORAGE = function(key) {
return uni.getStorageSync(key);
}
//清除本地存储
const CLEARSTORAGE = function(key) {
return uni.clearStorageSync()
}
const DEVENV = true; //用于判断是否是开发环境
/*
// const BASE = 'http://hz.witrear.logplat.top:27001/greenH5/greenH5modul/rest/mainInterface/approvalModule';
*/
const BASE = 'http://192.168.0.39:8080/greenH5/greenH5modul/rest/mainInterface/approvalModule';
// const BASE = 'http://192.168.0.99:27000/greenH5/greenH5modul/rest/mainInterface/approvalModule';
//'http://127.0.0.1:'+uni.getStorageSync("ZHHQ_HZ_PORT")+'/greenH5/greenH5modul/rest/mainInterface/approvalModule';
//发送请求
const DOMAIN = BASE;
const VBPICTURE = function(a) {
WXSDK.previewImage({
current: a[0], // 当前显示图片的http链接
urls: a, // 需要预览的图片http链接列表
hidePreviewMenuList: [] // 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮
});
// uni.previewImage({
// current:0,
// urls: a,
// success: function(data) {
// console.log(data,'data');
// },
// fail: function(err) {
// console.log(err,'err');
// }
// // longPressActions: {
// // itemList: [],
// // success: function(data) {
// // console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
// // },
// // fail: function(err) {
// // console.log(err.errMsg);
// // }
// // }
// });
}
const CALLPHONE = function(a) {
uni.makePhoneCall({
phoneNumber: a //仅为示例
});
}
const CALLBACK_REQUEST = function(data, method) {
data.checkTime = new Date().getTime();
data.clientId = uni.getStorageSync("clientId");
let url = "";
if (!DEVENV) {
url = 'http://127.0.0.1:' + uni.getStorageSync("ZHHQ_HZ_PORT") +
'/greenH5/greenH5modul/rest/mainInterface/approvalModule';
} else {
url = DOMAIN;
}
return new Promise((resolve, reject) => {
uni.showLoading({
title: '加载中'
})
uni.request({
url: url,
data: JSON.stringify(data),
method: method || 'POST',
dataType: 'json',
header: {
'content-type': 'application/x-www-form-urlencoded', //自定义请求头信息
},
success: res => {
uni.hideLoading();
console.log("返回参数", res.data);
resolve(res)
},
fail: err => {
console.log(err, "err");
reject(err);
uni.hideLoading();
ALERTTIP('数据加载失败')
},
complete() {
// uni.hideLoading();
}
})
})
}
const UPLOAD_IMG = function(data) {
let url = "";
if (!DEVENV) {
url = 'http://127.0.0.1:' + uni.getStorageSync("ZHHQ_HZ_PORT") +
'/greenH5/greenH5modul/rest/greenImageInfo/uploadImgBuGroup';
} else {
url = 'http://192.168.0.39:8080/greenH5/greenH5modul/rest/greenImageInfo/uploadImgBuGroup';
// url = 'http://10.40.92.31:8080/greenH5/greenH5modul/rest/greenImageInfo/uploadImgBuGroup';
}
return new Promise((resolve, reject) => {
uni.request({
url: url,
data: JSON.stringify(data),
method: 'POST',
dataType: 'json',
header: {
'content-type': 'application/x-www-form-urlencoded', //自定义请求头信息
},
success: res => {
resolve(res)
},
fail: err => {
console.log(err, "err");
reject(err);
ALERTTIP('数据加载失败')
},
complete() {
// uni.hideLoading();
}
})
})
}
const CALLBACK_REQUEST_NOLOADING = function(data, method) {
data.checkTime = new Date().getTime();
data.clientId = uni.getStorageSync("clientId");
let url = "";
if (!DEVENV) {
url = 'http://127.0.0.1:' + uni.getStorageSync("ZHHQ_HZ_PORT") +
'/greenH5/greenH5modul/rest/mainInterface/approvalModule';
} else {
url = DOMAIN;
}
return new Promise((resolve, reject) => {
uni.request({
url: url,
data: JSON.stringify(data),
method: method || 'POST',
dataType: 'json',
header: {
'content-type': 'application/x-www-form-urlencoded', //自定义请求头信息
},
success: res => {
resolve(res)
},
fail: err => {
console.log(err, "err");
reject(err);
ALERTTIP('数据加载失败')
},
complete() {
// uni.hideLoading();
}
})
})
}
//发送无提示加载中的请求
const CALLBACK_REQUEST_NOTIP = function(url, data, method) {
data.checkTime = new Date().getTime();
if (!DEVENV) {
url = 'http://127.0.0.1:' + uni.getStorageSync("ZHHQ_HZ_PORT") +
'/greenH5/greenH5modul/rest/mainInterface/approvalModule';
} else {
url = DOMAIN;
}
return new Promise((resolve, reject) => {
uni.request({
url: url,
data: JSON.stringify(data),
method: method || 'POST',
dataType: 'json',
header: {
'content-type': 'application/x-www-form-urlencoded', //自定义请求头信息
'X-Frame-Options': 'SAMEORIGIN'
},
success: res => {
resolve(res)
},
fail: err => {
console.log(err, "err");
reject(err);
uni.hideLoading();
ALERTTIP('数据加载失败')
},
complete() {
uni.hideLoading();
}
})
})
}
const REMOVEELEMENTOFARRAY = function(value, array) {
var index = -1;
for (var i = 0; i < array.length; i++) {
if (array[i] == value) {
index = i;
}
}
if (index >= 0) {
array.splice(index, 1);
}
return array;
}
//提示信息
const ALERTTIP = function(msg, icon, duration) {
uni.showToast({
title: msg,
icon: icon || 'none',
duration: duration || 3000
})
}
//需确认的提示信息
const SUREALERTTIP = function(title, content, showCancel) {
return new Promise((resolve, reject) => {
uni.showModal({
title: title || '',
content: content,
showCancel: showCancel,
success: res => {
if (res.confirm) {
resolve(200);
}
}
})
})
}
//时间格式化
const FORMATDATE = function(date, type) {
if (typeof date === 'string') {
date = date.replace(/-/g, '/');
}
let oldVal = new Date(date);
let newVal = '';
let year = oldVal.getFullYear();
let mount = oldVal.getMonth() + 1;
let day = oldVal.getDate();
let h = oldVal.getHours();
let m = oldVal.getMinutes();
let s = oldVal.getSeconds();
if (type == 'dateTime') {
newVal = year + '-' + format(mount) + '-' + format(day) + ' ' + format(h) + ':' + format(m) + ':' + format(
s);
} else if (type == 'm_Time') {
newVal = year + '-' + format(mount) + '-' + format(day) + ' ' + format(h) + ':' + format(m);
} else if (type == 'mTime') {
newVal = year + '/' + format(mount) + '/' + format(day) + ' ' + format(h) + ':' + format(m);
} else {
newVal = year + '-' + format(mount) + '-' + format(day);
}
function format(data) {
return data > 9 ? data : '0' + data
}
return newVal;
}
Date.prototype.format = function(fmt) {
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;
}
//获取近30天日期
const GETDATE = function() {
let time = new Date()
var a = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
let gday = 24 * 60 * 60 * 1000
let arr = [];
for (let i = 0; i < 30; i++) {
//         let tiems = new Date((time.getTime() + gday * i)).format('MM-dd');
let tiems = new Date((time.getTime() + gday * i));
tiems = FORMATDATE(tiems);
var day = new Date(tiems).getDay();
var week = a[day]
arr.push({
tiems: tiems,
week: week,
weekDay: day + "",
})
}
// var param ={
// "method": "greenCalendar/getCalendarList",
// "data": {
// date_name:arr[0].tiems,
// }
// };
// await getCalendar(param);
return arr;
}
const GETWEEK = function() {
var a = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"];
let arr = []
var now = new Date();
var year = now.getFullYear()
var day = now.getDay();
for (var i = 0; i < 7; i++) {
var firstDay = new Date(now - (now.getDay() - 1) * 86400000);
firstDay.setDate(firstDay.getDate() + i);
var mon = Number(firstDay.getMonth()) + 1 < 10 ? "0" + (Number(firstDay.getMonth()) + 1) : Number(firstDay
.getMonth()) + 1;
var day = firstDay.getDate() < 10 ? "0" + firstDay.getDate() : firstDay.getDate();
arr.push({
tiems: year + "-" + mon + "-" + day,
week: a[i],
weekDay: i,
})
}
return arr
}
const FORMATIMGURL = function(url) {
let oldUrl = url || "";
let imgName = oldUrl.split("webImageDir")[1];
if (imgName) {
let newUrl = 'http://127.0.0.1:' + uni.getStorageSync("ZHHQ_HZ_PORT") + '/webImageDir' + imgName;
return newUrl;
} else {
return "bucunzaideimg.jpg";
}
}
// 判断 json ,数组 等是否相等
const Compare = function Compare(objA, objB) {
if (!isObj(objA) || !isObj(objB)) return false; //判断类型是否正确
if (getLength(objA) != getLength(objB)) return false; //判断长度是否一致
return CompareObj(objA, objB, true); //默认为true
}
function isObj(object) {
return object && typeof(object) == 'object' && Object.prototype.toString.call(object).toLowerCase() ==
"[object object]";
}
function isArray(object) {
return object && typeof(object) == 'object' && object.constructor == Array;
}
function getLength(object) {
var count = 0;
for (var i in object) count++;
return count;
}
const CompareObj = function CompareObj(objA, objB, flag) {
for (var key in objA) {
if (!flag) //跳出整个循环
break;
if (!objB.hasOwnProperty(key)) {
flag = false;
break;
}
if (!isArray(objA[key])) { //子级不是数组时,比较属性值
if (objB[key] != objA[key]) {
flag = false;
break;
}
} else {
if (!isArray(objB[key])) {
flag = false;
break;
}
var oA = objA[key],
oB = objB[key];
if (oA.length != oB.length) {
flag = false;
break;
}
for (var k in oA) {
if (!flag) //这里跳出循环是为了不让递归继续
break;
flag = CompareObj(oA[k], oB[k], flag);
}
}
}
return flag;
}
// 获取今天起 指定天数的日期
const GETNUMDATE = function(num) {
let time = new Date()
var a = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
let gday = 24 * 60 * 60 * 1000
let arr = []
if (num <= 0) {
return arr
}
for (let i = 0; i < num; i++) {
//         let tiems = new Date((time.getTime() + gday * i)).format('MM-dd');
let tiems = new Date((time.getTime() + gday * i));
tiems = FORMATDATE(tiems);
var day = new Date(tiems).getDay();
var week = a[day]
arr.push({
tiems: tiems,
week: week,
weekDay: day + "",
})
}
return arr
}
//验证手机号
const REGPHONE = /^1[3|4|5|6|7|8|9]\d{9}$/;
//验证身份证号
const REGIDCARD =
/^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|31|30)|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}([0-9]|x|X)$/;
// 解决图片旋转问题 压缩
const resetOrientation = function(srcBase64, srcOrientation, callback) {
var img = new Image();
img.onload = function() {
var width = img.width,
height = img.height,
canvas = document.createElement('canvas'),
ctx = canvas.getContext("2d");
var maxWidth = 1024,
maxHeight = 1024;
if (width > maxWidth || height > maxHeight) {
if (width / height > maxWidth / maxHeight) {
maxHeight = Math.round(maxWidth * (height / width));
} else {
maxWidth = Math.round(maxHeight * (width / height));
}
} else {
maxWidth = width;
maxHeight = height;
}
if ([5, 6, 7, 8].indexOf(srcOrientation) > -1) {
canvas.width = maxHeight;
canvas.height = maxWidth;
} else {
canvas.width = maxWidth;
canvas.height = maxHeight;
}
switch (srcOrientation) {
case 2:
ctx.transform(-1, 0, 0, 1, maxWidth, 0);
break;
case 3:
ctx.transform(-1, 0, 0, -1, maxWidth, maxHeight);
break;
case 4:
ctx.transform(1, 0, 0, -1, 0, maxHeight);
break;
case 5:
ctx.transform(0, 1, 1, 0, 0, 0);
break;
case 6:
ctx.transform(0, 1, -1, 0, maxHeight, 0);
break;
case 7:
ctx.transform(0, -1, -1, 0, maxHeight, maxWidth);
break;
case 8:
ctx.transform(0, -1, 1, 0, 0, maxWidth);
break;
default:
ctx.transform(1, 0, 0, 1, 0, 0);
}
ctx.drawImage(img, 0, 0, maxWidth, maxHeight);
callback(canvas.toDataURL('image/jpeg'));
};
img.src = srcBase64;
}
const CONVERTIMGTOBASE64 = function(url, callback, outputFormat) {
var canvas = document.createElement('CANVAS'),
ctx = canvas.getContext('2d'),
img = new Image;
img.crossOrigin = 'Anonymous';
img.onload = function() {
var _this = this,
wid = img.width,
hei = img.height,
maxWidth = 1024,
maxHeight = 1024;
if (wid > maxWidth || hei > maxHeight) {
if (wid / hei > maxWidth / maxHeight) {
maxHeight = Math.round(maxWidth * (hei / wid));
} else {
maxWidth = Math.round(maxHeight * (wid / hei));
}
} else {
maxWidth = wid;
maxHeight = hei;
}
canvas.width = maxWidth;
canvas.height = maxHeight;
ctx.drawImage(img, 0, 0, maxWidth, maxHeight);
let newUrl = canvas.toDataURL(outputFormat || 'image/jpeg');
callback.call(_this, newUrl);
canvas = null;
};
img.src = url;
}
// 定义转换函数
const TRANSFORMNUM2CHINESE = function(tranvalue) {
try {
var i = 1;
var dw2 = new Array("", "万", "亿"); //大单位
var dw1 = new Array("十", "百", "千"); //小单位
var dw = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九"); //整数部分用
//以下是小写转换成大写显示在合计大写的文本框中
//分离整数与小数
// var source = SPLITS(tranvalue);
var source = [tranvalue.toString(), ""];
var num = tranvalue;
var dig = "";
//转换整数部分
var k1 = 0; //计小单位
var k2 = 0; //计大单位
var sum = 0;
var str = "";
var len = source[0].length; //整数的长度
for (i = 1; i <= len; i++) {
var n = source[0].charAt(len - i); //取得某个位数上的数字
var bn = 0;
if (len - i - 1 >= 0) {
bn = source[0].charAt(len - i - 1); //取得某个位数前一位上的数字
}
sum = sum + Number(n);
if (sum != 0) {
str = dw[Number(n)].concat(str); //取得该数字对应的大写数字并插入到str字符串的前面
if (n == '0') sum = 0;
}
if (len - i - 1 >= 0) { //在数字范围内
if (k1 != 3) { //加小单位
if (bn != 0) {
str = dw1[k1].concat(str);
}
k1++;
} else { //不加小单位,加大单位
k1 = 0;
var temp = str.charAt(0);
if (temp == "万" || temp == "亿") //若大单位前没有数字则舍去大单位
str = str.substr(1, str.length - 1);
str = dw2[k2].concat(str);
sum = 0;
}
}
if (k1 == 3) //小单位到千则大单位进一
{
k2++;
}
}
//转换小数部分
var strdig = "";
if (dig != "") {
var n = dig.charAt(0);
if (n != 0) {
strdig += dw[Number(n)] + "角"; //加数字
}
var n = dig.charAt(1);
if (n != 0) {
strdig += dw[Number(n)] + "分"; //加数字
}
}
str += strdig;
} catch (e) {
return "";
}
return str;
}
//拆分整数与小数
const SPLITS = function(tranvalue) {
var value = new Array('', '');
temp = tranvalue.split(".");
for (var i = 0; i < temp.length; i++) {
value[i] = temp[i];
}
return value;
}
// if (/(Android)/i.test(navigator.userAgent)) {
// WXSDK=jWeixin;
// }else{
// WXSDK=wx;
// }
// if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
// WXSDK=wx;
// }
module.exports = {
callPhone: CALLPHONE,
vbPicture: VBPICTURE,
alertTip: ALERTTIP,
setStorage: SETSTORAGE,
wxAuthorize: WXAUTHORIZE,
getStorage: GETSTORAGE,
clearStorage: CLEARSTORAGE,
callbackRequest: CALLBACK_REQUEST,
callbackRequestNoTip: CALLBACK_REQUEST_NOTIP,
callbackRequestNoLoading: CALLBACK_REQUEST_NOLOADING,
uploadImg: UPLOAD_IMG,
sureAlterTip: SUREALERTTIP,
formatDate: FORMATDATE,
getDate: GETDATE,
regPhone: REGPHONE,
convertImgToBase64: CONVERTIMGTOBASE64,
devEnv: DEVENV,
getNumDate: GETNUMDATE,
compare: Compare,
regIdCard: REGIDCARD,
resetOrientation: resetOrientation,
removeElementOfArray: REMOVEELEMENTOFARRAY,
transformNum2Chinese: TRANSFORMNUM2CHINESE,
getWeek: GETWEEK,
formatImgUrl: FORMATIMGURL,
wxSdk: WXSDK,
}