953 lines
25 KiB
JavaScript
953 lines
25 KiB
JavaScript
import {
|
||
hex_md5
|
||
} from './MD5.js'
|
||
import '@/common/aes.js'
|
||
import CryptoJS from '@/common/crypto-js.js'
|
||
var KEY = CryptoJS.enc.Utf8.parse("greenh5java12345")
|
||
var IV = CryptoJS.enc.Utf8.parse("greenh5java12345")
|
||
var md5s = "greenh5"
|
||
//设置本都存储
|
||
const SETSTORAGE = function(key, val) {
|
||
uni.setStorage({
|
||
key: key,
|
||
data: val,
|
||
success: _ => {
|
||
console.log('设置成功')
|
||
}
|
||
})
|
||
}
|
||
|
||
|
||
// console.log(Sm2Utils);
|
||
|
||
// 微信公众号授权
|
||
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 = false; // 用于判断是否是开发环境 true 是开发环境
|
||
// const BASE = 'http://10.137.22.253:48080'; // 用清
|
||
const BASE = 'http://192.168.0.246:48080'; // 用清
|
||
const DOC_BASE = '/doc-api'; // 名流接口地址
|
||
// const BASE = 'http://220.248.250.227:49967'; // 测试服务器
|
||
// const BASE = 'http://192.168.0.99:48080'; // 用清
|
||
// const BASE = 'http://10.137.22.253:48080'; // 用清
|
||
// const BASE = 'http://192.168.231.237:48080'; //方淼
|
||
// const BASE = 'http://192.168.24.237:48080'; //方淼 连的郑兵的热点
|
||
// const BASE = 'http://10.137.205.186:48080'; // 张政
|
||
// const BASE = 'http://192.168.0.249:48080'; // 张政
|
||
// const BASE = 'http://127.0.0.1:48080'; // 后端打包自用
|
||
// const BASE = 'https://8984j70x85.zicp.fun'; //张政映射
|
||
// const BASE = 'http://10.137.2.164:48080'; // 正伟
|
||
// const BASE = 'http://192.168.39.230:48080'; // 正伟
|
||
// const BASE = 'http://10.27.17.201:19001'; // 黑龙江
|
||
const DOMAIN = BASE;
|
||
//'http://127.0.0.1:'+uni.getStorageSync("ZHHQ_HZ_PORT")+'/greenH5/greenH5modul/rest/mainInterface/approvalModule';
|
||
//发送请求
|
||
|
||
const VBPICTURE = function(a) {
|
||
WXSDK.previewImage({
|
||
current: a[0], // 当前显示图片的http链接
|
||
urls: a, // 需要预览的图片http链接列表
|
||
hidePreviewMenuList: [] // 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮
|
||
});
|
||
}
|
||
const CALLPHONE = function(a) {
|
||
uni.makePhoneCall({
|
||
phoneNumber: a //仅为示例
|
||
});
|
||
}
|
||
const CALLBACK_REQUEST = function(data, method) {
|
||
// console.log('参数:', data)
|
||
data.checkTime = new Date().getTime();
|
||
if (!data.noLoading) {
|
||
uni.showLoading({
|
||
title: '加载中'
|
||
})
|
||
}
|
||
if (!data.userIdShow) {
|
||
data.userId = uni.getStorageSync("userId") ? uni.getStorageSync("userId") : '';
|
||
uni.setStorageSync("userId", data.userId)
|
||
}
|
||
let userInfos = uni.getStorageSync("userInfos")
|
||
data.tenantId = userInfos && userInfos.tenantId ? userInfos.tenantId : 1;
|
||
var KEY = CryptoJS.enc.Utf8.parse("greenh5java12345")
|
||
var IV = CryptoJS.enc.Utf8.parse("greenh5java12345")
|
||
var md5s = "greenh5"
|
||
var enparams = CryptoJS.AES.encrypt(JSON.stringify(data), KEY, {
|
||
iv: IV,
|
||
mode: CryptoJS.mode.CBC,
|
||
padding: CryptoJS.pad.ZeroPadding
|
||
}).toString()
|
||
var md5m = hex_md5(enparams + md5s).toLocaleUpperCase()
|
||
var checkTime = CryptoJS.AES.encrypt(JSON.stringify((new Date).getTime()), KEY, {
|
||
iv: IV,
|
||
mode: CryptoJS.mode.CBC,
|
||
padding: CryptoJS.pad.ZeroPadding
|
||
}).toString()
|
||
var method = CryptoJS.AES.encrypt(JSON.stringify(""), KEY, {
|
||
iv: IV,
|
||
mode: CryptoJS.mode.CBC,
|
||
padding: CryptoJS.pad.ZeroPadding
|
||
}).toString()
|
||
var params = {
|
||
body: enparams,
|
||
sign: md5m,
|
||
checkTime: checkTime,
|
||
method: method,
|
||
}
|
||
let Authorization = 'Bearer' + ' ' + data.userId
|
||
let userId = CryptoJS.AES.encrypt(Authorization, KEY, {
|
||
iv: IV,
|
||
mode: CryptoJS.mode.CBC,
|
||
padding: CryptoJS.pad.ZeroPadding
|
||
}).toString()
|
||
let url = "";
|
||
if (!DEVENV) {
|
||
// url = 'http://sgwpdm.ah.sgcc.com.cn';
|
||
url = 'http://10.138.55.104:48080';
|
||
} else {
|
||
url = DOMAIN;
|
||
}
|
||
return new Promise((resolve, reject) => {
|
||
uni.request({
|
||
url: url + data.method,
|
||
data: JSON.stringify(params),
|
||
method: 'POST',
|
||
dataType: 'json',
|
||
header: {
|
||
// 'tag': '',
|
||
'Authorization': userId,
|
||
'Tenant-Id': data.tenantId,
|
||
'content-type': 'application/json;charset=UTF-8', //自定义请求头信息
|
||
},
|
||
success: res => {
|
||
// let resdata = res.data
|
||
var md5m = hex_md5(res.body + md5s).toLocaleUpperCase()
|
||
// if (res.sign != md5m) {
|
||
// alert("数据异常")
|
||
// mui.hideLoading()
|
||
// return
|
||
// }
|
||
if (!data.noLoading) {
|
||
uni.hideLoading();
|
||
}
|
||
var decrypt = CryptoJS.AES.decrypt(res.data.body, KEY, {
|
||
iv: IV,
|
||
mode: CryptoJS.mode.CBC,
|
||
padding: CryptoJS.pad.ZeroPadding
|
||
})
|
||
var resdata = JSON.parse(decrypt.toString(CryptoJS.enc.Utf8))
|
||
console.log('接口入参' + data.method, data)
|
||
console.log('返回数据' + data.method, resdata)
|
||
// return param.cb(resdata)
|
||
resolve(resdata)
|
||
},
|
||
fail: err => {
|
||
if (!data.noLoading) {
|
||
uni.hideLoading();
|
||
}
|
||
console.log(err, "err");
|
||
reject(err);
|
||
if (!data.noLoading) {
|
||
uni.hideLoading();
|
||
}
|
||
ALERTTIP('数据加载失败')
|
||
},
|
||
// complete() {
|
||
// }
|
||
})
|
||
})
|
||
}
|
||
//图片上传公共方法
|
||
const chooseImg = () => {
|
||
return new Promise((resolve, reject) => {
|
||
let chec = 0;
|
||
let sty = []
|
||
uni.showActionSheet({
|
||
itemList: ['拍照', '相册'],
|
||
success: function(resp) {
|
||
chec = resp.tapIndex;
|
||
if (chec == 0) {
|
||
sty = ['camera']
|
||
} else {
|
||
sty = ['album']
|
||
}
|
||
uni.chooseImage({
|
||
count: 1,
|
||
sizeType: ['compressed'],
|
||
sourceType: sty,
|
||
quality: 1,
|
||
success: function(res) {
|
||
if (res.tempFiles[0].size > 1024 * 1024 * 5) {
|
||
uni.showToast({
|
||
title: '图片最大不能超过5M',
|
||
icon: 'none'
|
||
})
|
||
return
|
||
}
|
||
UPLOAD_IMG(res.tempFiles[0]).then(data => {
|
||
resolve(data)
|
||
})
|
||
.catch((errFiles) => {
|
||
reject(errFiles)
|
||
})
|
||
}
|
||
})
|
||
}
|
||
})
|
||
})
|
||
}
|
||
const UPLOAD_IMG = (imgUrl) => {
|
||
return new Promise((resolve, reject) => {
|
||
let url
|
||
let userId = ''
|
||
if (DEVENV) {
|
||
url = BASE + '/app-api/system/app/file/upload';
|
||
userId = 'cd43ce060ca0fe699de88297046f865c';
|
||
} else {
|
||
url = 'http://127.0.0.1:' + uni.getStorageSync("ZHHQ_HLJ_PORT") +
|
||
'/app-api/system/app/file/upload';
|
||
userId = uni.getStorageSync("userId") ? uni.getStorageSync("userId") : '';
|
||
}
|
||
let Bearer = 'Bearer' + ' ' + userId
|
||
let Authorization = CryptoJS.AES.encrypt(
|
||
Bearer,
|
||
KEY, {
|
||
iv: IV,
|
||
mode: CryptoJS.mode.CBC,
|
||
padding: CryptoJS.pad.ZeroPadding
|
||
}).toString()
|
||
uni.uploadFile({
|
||
url: url,
|
||
header: {
|
||
'Authorization': Authorization,
|
||
'tenant-id': 1,
|
||
},
|
||
file: imgUrl,
|
||
formData: {
|
||
domain: 'com',
|
||
code: '',
|
||
type: '',
|
||
},
|
||
success: resFiles => {
|
||
uni.showToast({
|
||
title: '上传成功',
|
||
icon: 'none'
|
||
})
|
||
let decrypt = CryptoJS.AES.decrypt(JSON
|
||
.parse(resFiles.data)
|
||
.body, KEY, {
|
||
iv: IV,
|
||
mode: CryptoJS.mode.CBC,
|
||
padding: CryptoJS.pad
|
||
.ZeroPadding
|
||
})
|
||
let resdata = JSON.parse(decrypt
|
||
.toString(CryptoJS.enc.Utf8))
|
||
resolve(resdata.returnData)
|
||
},
|
||
fail: errFiles => {
|
||
reject(errFiles)
|
||
}
|
||
})
|
||
})
|
||
}
|
||
|
||
|
||
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', //自定义请求头信息
|
||
},
|
||
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 || 2000
|
||
})
|
||
}
|
||
//需确认的提示信息
|
||
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;
|
||
// }
|
||
let WXSDK = "";
|
||
if (wx.config) {
|
||
WXSDK = wx;
|
||
} else {
|
||
WXSDK = jWeixin;
|
||
}
|
||
const searchTree = function(nodes, targetField, targetValue) {
|
||
for (let node of nodes) {
|
||
if (node[targetField] === targetValue) {
|
||
return true; // 找到了匹配的值
|
||
}
|
||
if (node.children) {
|
||
// 递归搜索子节点
|
||
if (searchTree(node.children, targetField, targetValue)) {
|
||
return true;
|
||
}
|
||
}
|
||
}
|
||
return false; // 没有找到匹配的值
|
||
}
|
||
const searchTreeMenu = function(nodes, targetField, targetValue) {
|
||
for (let node of nodes) {
|
||
// 检查当前节点是否匹配
|
||
if (node[targetField] === targetValue) {
|
||
return node.children || []; // 返回匹配节点的子节点
|
||
}
|
||
// 如果有子节点,递归搜索子节点
|
||
if (node.children) {
|
||
const result = searchTreeMenu(node.children, targetField, targetValue);
|
||
if (result.length > 0) { // 找到第一个匹配子节点后立即返回
|
||
return result;
|
||
}
|
||
}
|
||
}
|
||
return []; // 未找到匹配节点时返回空数组
|
||
};
|
||
|
||
const ML_CALLBACK_REQUEST = function(url, method, data) {
|
||
return new Promise((resolve, reject) => {
|
||
uni.showLoading({
|
||
title: '加载中',
|
||
mask: false
|
||
});
|
||
let ML_BASE = ''
|
||
if (!DEVENV) {
|
||
ML_BASE = 'https://api.mljk.com';
|
||
} else {
|
||
ML_BASE = DOC_BASE;
|
||
}
|
||
uni.request({
|
||
url: ML_BASE + url,
|
||
method: method,
|
||
data: data,
|
||
success: (res) => {
|
||
console.log(res);
|
||
uni.hideLoading()
|
||
if (res.statusCode == 200) {
|
||
if (res.data.code == '1') {
|
||
resolve(res)
|
||
} else {
|
||
uni.showToast({
|
||
title: res.data.message,
|
||
icon: 'none'
|
||
});
|
||
reject()
|
||
}
|
||
} else {
|
||
uni.showModal({
|
||
title: '提示',
|
||
content: `错误编码:${res.statusCode},错误信息:${res.data.Message || res.data}`
|
||
});
|
||
reject()
|
||
}
|
||
},
|
||
fail: (err) => {
|
||
uni.hideLoading()
|
||
console.log(err)
|
||
uni.showModal({
|
||
title: '提示',
|
||
content: JSON.stringify(err),
|
||
showCancel: false
|
||
});
|
||
reject(err)
|
||
}
|
||
})
|
||
})
|
||
}
|
||
|
||
/**
|
||
** 加法函数,用来得到精确的加法结果
|
||
** 说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
|
||
** 调用:accAdd(arg1,arg2)
|
||
** 返回值:arg1加上arg2的精确结果
|
||
**/
|
||
const accAdd = function(arg1, arg2) {
|
||
var r1, r2, m, c;
|
||
try {
|
||
r1 = arg1.toString().split(".")[1].length;
|
||
} catch (e) {
|
||
r1 = 0;
|
||
}
|
||
try {
|
||
r2 = arg2.toString().split(".")[1].length;
|
||
} catch (e) {
|
||
r2 = 0;
|
||
}
|
||
c = Math.abs(r1 - r2);
|
||
m = Math.pow(10, Math.max(r1, r2));
|
||
if (c > 0) {
|
||
var cm = Math.pow(10, c);
|
||
if (r1 > r2) {
|
||
arg1 = Number(arg1.toString().replace(".", ""));
|
||
arg2 = Number(arg2.toString().replace(".", "")) * cm;
|
||
} else {
|
||
arg1 = Number(arg1.toString().replace(".", "")) * cm;
|
||
arg2 = Number(arg2.toString().replace(".", ""));
|
||
}
|
||
} else {
|
||
arg1 = Number(arg1.toString().replace(".", ""));
|
||
arg2 = Number(arg2.toString().replace(".", ""));
|
||
}
|
||
return (arg1 + arg2) / m;
|
||
}
|
||
|
||
/**
|
||
** 减法函数,用来得到精确的减法结果
|
||
** 说明:javascript的减法结果会有误差,在两个浮点数相减的时候会比较明显。这个函数返回较为精确的减法结果。
|
||
** 调用:accSub(arg1,arg2)
|
||
** 返回值:arg1减去arg2的精确结果
|
||
**/
|
||
|
||
const accSub = function(arg1, arg2) {
|
||
var r1, r2, m, n;
|
||
try {
|
||
r1 = arg1.toString().split(".")[1].length;
|
||
} catch (e) {
|
||
r1 = 0;
|
||
}
|
||
try {
|
||
r2 = arg2.toString().split(".")[1].length;
|
||
} catch (e) {
|
||
r2 = 0;
|
||
}
|
||
m = Math.pow(10, Math.max(r1, r2)); //last modify by deeka //动态控制精度长度
|
||
n = (r1 >= r2) ? r1 : r2;
|
||
return ((arg1 * m - arg2 * m) / m).toFixed(n);
|
||
}
|
||
|
||
/**
|
||
** 乘法函数,用来得到精确的乘法结果
|
||
** 说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
|
||
** 调用:accMul(arg1,arg2)
|
||
** 返回值:arg1乘以 arg2的精确结果
|
||
**/
|
||
|
||
const accMul = function(arg1, arg2) {
|
||
var m = 0,
|
||
s1 = arg1.toString(),
|
||
s2 = arg2.toString();
|
||
try {
|
||
m += s1.split(".")[1].length;
|
||
} catch (e) {}
|
||
try {
|
||
m += s2.split(".")[1].length;
|
||
} catch (e) {}
|
||
return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
|
||
}
|
||
|
||
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,
|
||
chooseImg: chooseImg,
|
||
base: BASE,
|
||
searchTree: searchTree,
|
||
searchTreeMenu: searchTreeMenu,
|
||
DOC_BASE,
|
||
ML_CALLBACK_REQUEST,
|
||
accAdd,
|
||
accSub,
|
||
accMul
|
||
} |