You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

817 lines
19 KiB

// 请求时接口的公用部分
// #ifdef APP-PLUS || MP
// const baseUrl = "http://116.62.210.143:9002";
11 months ago
// const baseUrl = "http://118.89.79.160:8800/HiatmpPro";
11 months ago
// const baseUrl = "http://49.235.207.167:8800/HiatmpPro";
const baseUrl = "http://219.147.31.25:30001/tht-app-api/HiatmpPro";
11 months ago
const chatUrl = "http://219.147.31.25:30001/hitap";
// #endif
// #ifdef H5
const baseUrl = "/HiatmpPro";
const chatUrl = "/hitapChat";
// #endif
// 图片路径的公用部分
const imgSrc = "/static";
// 图片上传地址
const imgUrl = "/hyjg-admin/mapi/upload/upload";
const imgUserIdUrl = "/hyjg-admin/mapi/upload/uploadAndIdentify";
// 上传图片的name值
const fileImgKey = "file";
// 上传视频的name值
const fileVideoKey = "img";
// 上传视频的大小限制(单位:千字节)
const videoSize = 10240000; // 10M
module.exports = {
// --------------------变量--------------------
// 图片路径的公用部分
imgSrc,
// 图片上传地址
imgUrl,
imgUserIdUrl,
// 上传图片的name值
fileImgKey,
// 视频大小
videoSize,
// 视频name值
fileVideoKey,
baseUrl,
chatUrl,
// ----------------------校验----------------------
// 处理时间两位数
timeDealTwo(value) {
let val = Number(value)
return val < 10 ? '0' + val : val
},
// 判断两个对象是否相同
isObjEqual(o1, o2) {
var props1 = Object.getOwnPropertyNames(o1)
var props2 = Object.getOwnPropertyNames(o2)
if (props1.indexOf('__ob__') !== -1) {
props1.splice(props1.indexOf('__ob__'), 1)
}
if (props2.indexOf('__ob__') !== -1) {
props2.splice(props2.indexOf('__ob__'), 1)
}
var a = true
var b = true
if (props1.length !== props2.length) {
a = false
} else {
for (var i = 0, max = props1.length; i < max; i++) {
var propName = props1[i]
if (o1[propName] !== o2[propName]) {
b = false
break
}
}
}
return a && b
},
checkHasKey(key, str) {
if (str.indexOf(key) != -1) {
return true
}
return false
},
// 非空验证(包含数字)
isEmpty(value, isnumber = false) {
if (isnumber) {
if (value <= 0) {
return false
}
}
if (value == '' || value == null || typeof(value) == 'undefined') {
return false
}
return true
},
// 手机号验证
isPhone(phone) {
// 是否正确(默认不正确)
let br = false;
if (/^0?(13[0-9]|14[5-9]|15[012356789]|166|17[0-9]|18[0-9]|19[8-9])[0-9]{8}$/.test(phone)) {
br = true;
}
return br;
},
// 邮箱验证
isEmail(email) {
// 是否正确(默认不正确)
let br = false;
if (/^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$/.test(email)) {
br = true;
}
return br;
},
// 身份证验证
isPersonID(code) {
//身份证号合法性验证
//支持15位和18位身份证号
//支持地址编码、出生日期、校验位验证
var city = {
11: "北京",
12: "天津",
13: "河北",
14: "山西",
15: "内蒙古",
21: "辽宁",
22: "吉林",
23: "黑龙江 ",
31: "上海",
32: "江苏",
33: "浙江",
34: "安徽",
35: "福建",
36: "江西",
37: "山东",
41: "河南",
42: "湖北 ",
43: "湖南",
44: "广东",
45: "广西",
46: "海南",
50: "重庆",
51: "四川",
52: "贵州",
53: "云南",
54: "西藏 ",
61: "陕西",
62: "甘肃",
63: "青海",
64: "宁夏",
65: "新疆",
71: "台湾",
81: "香港",
82: "澳门",
91: "国外 "
};
var br = true;
var msg = "验证成功";
if (!code || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|[xX])$/.test(code)) {
br = false;
msg = "被保人身份证号格式错误";
} else if (!city[code.substr(0, 2)]) {
br = false;
msg = "被保人身份证号地址编码错误";
} else {
//18位身份证需要验证最后一位校验位
if (code.length == 18) {
code = code.split('');
//∑(ai×Wi)(mod 11)
//加权因子
var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
//校验位
var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];
var sum = 0;
var ai = 0;
var wi = 0;
for (var i = 0; i < 17; i++) {
ai = code[i];
wi = factor[i];
sum += ai * wi;
}
if (parity[sum % 11] != code[17].toUpperCase()) {
br = false;
msg = "被保人身份证号校验位错误";
}
}
}
return {
br,
msg
};
},
// 处理时间
dealTimeLength(value) {
let num = Number(value)
let str = num < 10 ? '0' + num : num
// let str = value.toString()
return str
},
// 是否是正整数
isNum(num) {
if (!(/(^[1-9]\d*$)/.test(num))) {
return false;
}
return true
},
// 是否有小数点
isDot(num) {
var result = (num.toString()).indexOf(".");
if (result != -1) {
return false
alert("含有小数点");
}
return true
},
// ----------------------原生----------------------
setNavName(value) {
uni.setNavigationBarTitle({
title: value
})
},
// 查看文件
checkFile(url) {
uni.showLoading({
mask: true,
});
uni.downloadFile({
url: url, //仅为示例,并非真实的资源
success: function(res) {
if (res.statusCode === 200) {
uni.hideLoading();
var filePath = res.tempFilePath;
uni.openDocument({
filePath: filePath,
success: function(res) {
console.log("打开文档成功");
},
});
}
},
});
},
// 扫一扫
scanCode(callback) {
uni.scanCode({
scanType: ['barCode', 'qrCode'],
success(res) {
callback(res)
}
});
},
// 图片预览
previewImg(current, urls) {
uni.previewImage({
current: current, // 当前显示图片的https链接
urls: urls // 需要预览的图片https链接列表
})
},
// 显示加载动画
showLoading(title = "加载中...", mask = true) {
uni.showLoading({
title: title,
mask: mask,
})
},
// 关闭加载动画
hideLoading() {
uni.hideLoading();
},
// 提示框
toast(title, time = 1500, mask = true, icon = "none") {
uni.showToast({
// 提示的内容
title: title,
// 提示的时间
duration: time,
// 是否显示透明蒙层,防止触摸穿透(false)
mask: mask,
// 图标(success)
icon: icon,
})
},
// 对话框
dialogBox(obj) {
let showCancel = true;
if (obj.l_show == false) {
showCancel = false;
}
uni.showModal({
// 对话框的标题(选填)
title: obj.title || "",
// 对话框的内容(选填)
content: obj.content || "",
// 是否显示左边的按钮(选填,默认显示)
showCancel: showCancel,
// 左边按钮的文字内容(选填,默认取消)
cancelText: obj.l_text || "取消",
// 左边按钮的文字颜色(选填,默认#000000)
cancelColor: obj.l_color || "#000000",
// 右边按钮的文字内容(选填,默认确定)
confirmText: obj.r_text || "确定",
// 右边按钮的文字颜色(选填,默认#3cc51f)
confirmColor: obj.r_color || "#3cc51f",
success: (res) => {
if (res.confirm) { // 点击了确定按钮
if (obj.r_fun) {
obj.r_fun();
}
} else { // 点击了取消按钮
if (obj.l_fun) {
obj.l_fun();
}
}
}
})
},
// 打开一个新页面
open(url) {
uni.navigateTo({
url: url
})
},
// 关闭所有页面,然后打开一个新页面
openNew(url) {
uni.reLaunch({
url: url
});
},
// 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。
openTab(url) {
uni.switchTab({
url: url
});
},
// 当前页打开新页面
href(url) {
uni.redirectTo({
url: url
})
},
// 页面返回
back(delta = 1) {
// #ifdef H5
const pages = getCurrentPages()
if (pages.length > 1) {
uni.navigateBack(1)
return;
}
//使用vue-router返回上一级
if (typeof(this.$router) == 'undefined') {
//重新定向跳转页面
uni.switchTab({
url: '/pages/index/index'
})
} else {
this.$router.go(-1)
}
return;
// #endif
if (getCurrentPages().length > 1) {
uni.navigateBack({
delta: delta
})
} else {
// #ifdef APP-PLUS
uni.switchTab({
url: '/pages/index/index'
})
// #endif
// #ifdef MP-WEIXIN
uni.switchTab({
url: '/pages/index/index'
})
// #endif
}
},
// 获取之前页面的数据
backGetData(index = 1) {
// 往上一级页面传参
const pages = getCurrentPages();
const prevPage = pages[pages.length - index - 1]; // 上index级页面
return prevPage;
},
// 将数据存到本地
setData(key, data) {
uni.setStorageSync(key, data);
},
// 从本地获取数据
getData(key) {
return uni.getStorageSync(key);
},
// 同步删除本地数据
removeData(key) {
uni.removeStorageSync(key);
},
// 同步清除本地数据
clearData() {
uni.clearStorage();
},
// 设置底部导航
setBar(index, text) {
uni.setTabBarItem({
index: index,
text: text
})
},
// 打开地图选择地址
chooseAddress(success) {
uni.chooseLocation({
success: function(res) {
success({
// 地点名称
name: res.name,
// 详细地址
address: res.address,
// 经纬度
lng: res.longitude,
lat: res.latitude
});
},
});
},
// 打开地图
openMap(lng, lat, name) {
uni.openLocation({
longitude: lng - 0,
latitude: lat - 0,
name: name,
})
},
// 复制
copy(text, toasttext = '复制成功') {
// #ifdef APP-PLUS
uni.setClipboardData({
data: text,
success: () => {
toast(toasttext);
}
});
// #endif
// #ifdef H5
// 如果是H5,获取设备信息
uni.getSystemInfo({
success: function(res) {
let input = document.createElement('input');
input.type = 'text';
input.value = text;
input.style.position = 'fixed';
input.style.top = "-100vh";
input.style.left = "-100vw";
input.style.opacity = 0;
window.document.body.appendChild(input);
input.select();
if (res.platform == "ios") {
input.setSelectionRange(0, input.value.length), document.execCommand('Copy');
} else {
document.execCommand("Copy");
}
document.body.removeChild(input);
toast(toasttext);
}
});
// #endif
},
// 拨打电话
callNumber(phone) {
uni.makePhoneCall({
phoneNumber: phone,
})
},
// ----------------------自封方法----------------------
// 获取分发类型
getTypeFenFa() {
return [{
type: 1,
label: '代表发文'
},
{
type: 2,
label: '收文'
},
{
type: 3,
label: '呈报事项'
},
{
type: 4,
label: '纪检发文'
},
{
type: 5,
label: '会议通知'
},
{
type: 6,
label: '重大事项通知'
},
{
type: 7,
label: '议案分发提议人'
},
{
type: 8,
label: '公文流转'
},
]
},
// 获取员工类型
getPersonType() {
return [{
type: 1,
label: '集团领导'
},
{
type: 2,
label: '中层领导'
},
{
type: 3,
label: '普通员工'
},
]
},
// 获取书记类型
getTypeSJ() {
return [{
type: 1,
label: '党委书记'
},
{
type: 2,
label: '党委副书记'
}
]
},
// 获取当前时间-年月日
getNowTimeYMD() {
let date = new Date(),
year = date.getFullYear(),
month = (date.getMonth() + 1) < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1,
day = (date.getDate()) < 10 ? '0' + (date.getDate()) : date.getDate(),
days = year + '-' + month + '-' + day
return days
},
// 获取当前时间-年月日时分
getNowTimeYMDHM() {
let date = new Date(),
year = date.getFullYear(),
month = (date.getMonth() + 1) < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1,
day = (date.getDate()) < 10 ? '0' + (date.getDate()) : date.getDate(),
hour = (date.getHours()) < 10 ? '0' + (date.getHours()) : date.getHours(),
min = (date.getMinutes()) < 10 ? '0' + (date.getMinutes()) : date.getMinutes(),
days = year + '-' + month + '-' + day + ' ' + hour + ':' + min
return days
},
// 两个数组合并并且去重
mergeArr(arr1, arr2, key) {
let arr = arr1.concat(arr2); //两个数组对象合并
let newArr = []; //盛放去重后数据的新数组
for (let a = 0; a < arr.length; a++) { //循环json数组对象的内容
let flag = true; //建立标记,判断数据是否重复,true为不重复
for (let b = 0; b < newArr.length; b++) { //循环新数组的内容
if (arr[a][key] == newArr[b][key]) { //让json数组对象的内容与新数组的内容作比较,相同的话,改变标记为false
flag = false;
}
}
if (flag) { //判断是否重复
newArr.push(arr[a]); //不重复的放入新数组。 新数组的内容会继续进行上边的循环。
}
}
return newArr
},
// 去掉数组重复数据
delArrRepeat(arr, key) {
var result = [];
var obj = {};
for (var i = 0; i < arr.length; i++) {
if (!obj[arr[i][key]]) {
result.push(arr[i]);
obj[arr[i][key]] = true;
}
}
return result
},
// 检查对象是否有某key
checkObjHasKey(key, obj) {
if (key in obj) {
return true
}
return false
},
IsPC() {
var userAgentInfo = navigator.userAgent;
var Agents = ["Android", "iPhone",
"SymbianOS", "Windows Phone",
"iPad", "iPod"
];
var flag = true;
for (var v = 0; v < Agents.length; v++) {
if (userAgentInfo.indexOf(Agents[v]) > 0) {
flag = false;
break;
}
}
return flag;
},
// 获取语言列表
getLanguage() {
return [{
id: 'cn',
name: 'CN',
type: 1
},
// {id:'en',name:'English',type:2}
]
},
// 检测url是否有某key,并获取值
urlIsHaveKey(key) {
let urlAll = window.location.href
let urls = urlAll.replace('?', '&')
let urlArr = urls.split('&')
// console.log(urlArr)
for (let a = 0; a < urlArr.length; a++) {
let urlA = urlArr[a].split('=')
if (urlA[0] == key) {
return urlA[1]
}
}
return ''
},
// 计算精度
getPoint(num) {
let number = 1
for (let a = 0; a < num; a++) {
number = number + '0'
}
return Number(number)
},
// 获取合约地址
getContract() {
return {
'key': '地址',
}
},
// 获取请求域名
getBaseUrl() {
return baseUrl
},
// 获取图片域名
getBasePageUrl() {
return 'https://pool.xinhuoshuju.com'
},
// 判断对象中是否有某key值,如果有该值,直接返回该对象
checkObjKeyIsValue(arrs, key, value) {
let items = ''
arrs.forEach((item, k) => {
if (item[key] == value) {
items = item
}
})
if (items) {
return items
}
return false
},
// 数字转换小数点任意位
changeNumberPoint(number, length = 2) {
let nums = '1'
for (let a = 0; a < length; a++) {
nums = nums + '0'
}
let num = Number(number) / nums // 金额转换小数点后六位
let result = num.toFixed(length) // 截取6位
return result
},
// 检测密码只能是英文大小写加数字
checkPswEN(psw) {
let check_big = /[A-Z]/g
// console.log(check_big.test(psw))
let check_small = /[a-z]/g
// console.log(check_small.test(psw))
let check_num = /[0-9]/g
// console.log(check_num.test(psw))
if (check_big.test(psw) && check_small.test(psw) && check_num.test(psw)) {
return true
}
return false
},
// 生成uuid
createUUID() {
var s = [];
var hexDigits = "0123456789abcdef";
for (var i = 0; i < 36; i++) {
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
}
s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
s[8] = s[13] = s[18] = s[23] = "-";
var uuid = s.join("");
return uuid;
},
// ----------------------时间转换----------------------
// 获取当前时间-精确到时分秒
time_StampToHMS() {
var now = new Date();
var hour = now.getHours(); //得到小时
var minu = now.getMinutes(); //得到分钟
var sec = now.getSeconds(); //得到秒
if (hour < 10) {
hour = '0' + hour
}
if (minu < 10) {
minu = '0' + minu
}
if (sec < 10) {
sec = '0' + sec
}
return hour + ':' + minu + ':' + sec
},
// 时分秒转换成秒数
time_HMSToS(time) {
var s = '';
var hour = time.split(':')[0];
var min = time.split(':')[1];
var sec = time.split(':')[2];
s = Number(hour * 3600) + Number(min * 60) + Number(sec);
return s;
},
// 根据时间戳获取年月日时分秒
time_StampToYMDHMS(sjc) {
let datetime = new Date(sjc);
// 获取年月日时分秒值 slice(-2)过滤掉大于10日期前面的0
var year = datetime.getFullYear(),
month = ("0" + (datetime.getMonth() + 1)).slice(-2),
date = ("0" + datetime.getDate()).slice(-2),
hour = ("0" + datetime.getHours()).slice(-2),
minute = ("0" + datetime.getMinutes()).slice(-2),
second = ("0" + datetime.getSeconds()).slice(-2);
// 拼接
var result = year + "-" + month + "-" + date + " " + hour + ":" + minute + ":" + second;
// 返回
return result;
},
// 毫秒转换时分秒
time_MsecToHMS(value) {
var theTime = parseInt(value); // 秒
var middle = 0; // 分
var hour = 0; // 小时
if (theTime > 60) {
middle = parseInt(theTime / 60);
theTime = parseInt(theTime % 60);
if (middle > 60) {
hour = parseInt(middle / 60);
middle = parseInt(middle % 60);
}
}
var result = parseInt(theTime);
if (theTime < 10) {
result = "0" + theTime;
}
if (middle > 0) {
if (middle < 10) {
result = "0" + parseInt(middle) + ":" + result;
} else {
result = parseInt(middle) + ":" + result;
}
}
if (hour > 0) {
if (hour < 10) {
result = "0" + parseInt(hour) + ":" + result;
} else {
result = parseInt(hour) + ":" + result;
}
}
return result;
},
clearEmpty(value) {
return value.replaceAll(' ', '')
},
// 秒转换成天时分秒
time_MsecToDHMS(time) {
time = (time / 1000).toFixed(0)
var days = parseInt(time / (1000 * 60 * 60 * 24));
var hours = parseInt((time % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = parseInt((time % (1000 * 60 * 60)) / (1000 * 60));
var seconds = (time % (1000 * 60)) / 1000;
return (days).toFixed(0) + " 天 " + (hours).toFixed(0) + " 小时 " + (minutes).toFixed(0) + " 分钟 " + (seconds)
.toFixed(0) + " 秒 ";
},
// 秒数转换成时分秒
time_SToHMS(s) {
var t
if (s > -1) {
var hour = Math.floor(s / 3600)
var min = Math.floor(s / 60) % 60
var sec = s % 60
if (hour < 10) {
t = '0' + hour + ":"
} else {
t = hour + ":"
}
if (min < 10) {
t += "0"
}
t += min + ":"
if (sec < 10) {
t += "0"
}
t += sec.toFixed(2)
}
return t
},
}