yxk_pc_mdh/src/utils/tools_1.js

307 lines
8.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

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.

export function formatDateTime(date) {
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? ('0' + m) : m;
var d = date.getDate();
d = d < 10 ? ('0' + d) : d;
return y + '-' + m + '-' + d;
}
export function parseTime(time, cFormat) {
if (arguments.length === 0) {
return null
}
const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
let date
if (typeof time === 'object') {
date = time
} else {
if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
time = parseInt(time)
}
if ((typeof time === 'number') && (time.toString().length === 10)) {
time = time * 1000
}
date = new Date(time)
}
const formatObj = {
y: date.getFullYear(),
m: date.getMonth() + 1,
d: date.getDate(),
h: date.getHours(),
i: date.getMinutes(),
s: date.getSeconds(),
a: date.getDay()
}
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
let value = formatObj[key]
// Note: getDay() returns 0 on Sunday
if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }
if (result.length > 0 && value < 10) {
value = '0' + value
}
return value || 0
})
return time_str
}
//时间戳转时间,精确到年月日时分秒
export function getTimeToDate(time) {
if(time){
var date = new Date(time);
var y = date.getFullYear();
var m = toNum2(date.getMonth() + 1);
var d = toNum2(date.getDate());
var h = toNum2(date.getHours());
var mm = toNum2(date.getMinutes());
var s = toNum2(date.getSeconds());
let currentdate=y + '-' + m + '-' + d+' '+h+':'+mm+':'+s;
return currentdate;
}else{
return ""
}
}
//月日时分秒不足两位数时加0
export function toNum2(num){
if(num.toString().length<2){
return '0'+num
}else{
return num
}
}
export function getCurrentDate() {
let date = new Date();
let y = date.getFullYear();
let MM = date.getMonth() + 1;
MM = MM < 10 ? ('0' + MM) : MM;
let d = date.getDate();
d = d < 10 ? ('0' + d) : d;
let h = date.getHours();
h = h < 10 ? ('0' + h) : h;
let m = date.getMinutes();
m = m < 10 ? ('0' + m) : m;
let s = date.getSeconds();
s = s < 10 ? ('0' + s) : s;
return y + '-' + MM + '-' + d + ' ' + h + ':' + m + ':' + s;
}
/**
* 获取树形结构数据
*/
export function getTree(tree) {
let arr = [];
if (!!tree && tree.length !== 0) {
tree.forEach(item => {
let obj = {};
obj.id = parseInt(item.id);
obj.name = item.text;
if (item.routePath) {
obj.path = item.routePath;
}
if(item.url){
obj.url = item.url;
}
if (item.type === '0') {
obj.hidden = false;
} else if (item.type === '1') {
obj.hidden = false;
} else if (item.type === '2') {
obj.hidden = true;
} else if (item.type === '3') {
obj.hidden = true;
}
if (item.icon) {
if (item.icon.substr(0, 2) !== "fa") {
obj.icon = item.icon.replace(/\s+/g, " ");;
}
}
//obj.icon = "iconfont icon-shebei";
obj.child = getTree(item.children); // 递归调用
arr.push(obj);
});
}
return arr;
}
export function getWorkTime(start, end) {
start = new Date(start);
end = new Date(end);
const at = 8.5,
bt = 1.5,
ct = 6,
dt = 16,
startDate = start.toLocaleDateString(), // 日期
endDate = end.toLocaleDateString();
let res = (end - start) / 1000 / 3600;
// 同一天
if (startDate === endDate) {
if (start.getHours() < 12 && end.getHours() > 12) {
res = res - bt;
}
}
else {
// 相差一天
res = res - at - ct;
if (start.getHours() < 12) {
res = res - bt;
}
if (end.getHours() > 12) {
res = res - bt;
}
// 超过一天
const cDate = (new Date(endDate) - new Date(startDate)) / 3600 / 24 / 1000;
if (cDate > 1) {
res = res - dt * (cDate - 1);
}
}
return res;
}
export function dateDifference(faultDate, completeTime) {
// let d1 = new Date(faultDate);
// let d2 = new Date(completeTime);
var stime = new Date(faultDate).getTime();
var etime = new Date(completeTime).getTime();
var usedTime = etime - stime; //两个时间戳相差的毫秒数
var days = Math.floor(usedTime / (24 * 3600 * 1000));
// //计算出小时数
var leave1 = usedTime % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
var hours = Math.floor(leave1 / (3600 * 1000));
// //计算相差分钟数
// var leave2=leave1%(3600*1000); //计算小时数后剩余的毫秒数
// var minutes=Math.floor(leave2/(60*1000));
// // var time = days + "天"+hours+"时"+minutes+"分";
var time = hours;
return time;
}
//日期转时间戳
export function dataToTime(faultDate) {
var time = new Date(faultDate).getTime();//13位时间戳
return time;
}
//当前时间戳,精确到时分秒
export function getCurrentTime() {
var timestamp = (new Date()).getTime();
return timestamp;
}
//当前时间戳,精确到年月日
export function getCurrentDateTime() {
var date = new Date();
var y = date.getFullYear();
var m = date.getMonth() + 1;
var d = date.getDate();
let currentdate=y + '-' + m + '-' + d;
var timestamp = (new Date(currentdate)).getTime();
return timestamp;
}
//正则验证手机号
export function regularMobile(val){
var reg=/^1\d{10}$/;//验证手机号
return reg.test(val)
}
//正则验证固定电话
export function regularTelephone(val){
var reg=/^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/;
return reg.test(val)
}
//正则验证邮箱
export function regularEmail(val){
var reg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;//验证邮箱
return reg.test(val)
}
//正则验证正整数和0
export function regularPositiveInteger(val){
var reg=/^([1-9]\d*|[0]{1,1})$/;
return reg.test(val)
}
//验证密码输入规范6到20位由数字和字母组成并且要同时含有数字和字母。
export function regularPassword(val){
var reg=/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/
return reg.test(val)
}
//验证用户名输入规范用户名必须是4到16位字母数字下划线减号
// export function regularUsername(val){
// var reg=/^[a-zA-Z]\w{3,15}$/
// return reg.test(val)
// }
// 验证用户名输入规范,用户名必须是英文和数字
export function regularUsername(val){
var reg=/^[0-9a-zA-Z]+$/
return reg.test(val)
}
/**
* 存储localStorage
*/
export const setStore = (name, content) => {
if (!name) return;
if (typeof content !== "string") {
content = JSON.stringify(content);
}
window.localStorage.setItem(name, content);
};
/**
* 存储可过期的localstorage
* @param key
* @param value
*/
export function setLocalStorageAndTime (key, value) {
if (!key) return;
if (typeof value !== "string") {
value = JSON.stringify(value);
}
window.localStorage.setItem(key, JSON.stringify({ data: value, time: new Date().getTime() }))
}
/**
* 获取localStorage
*/
export const getStore = name => {
if (!name) return;
return window.localStorage.getItem(name);
};
/**
* 获取有效期内的数据
* @param key
* @param exp
* @returns {null|*}
*/
export function getLocalStorageAndTime (key) {
// 获取数据
const exp = 1000*60*60*24*3;//设置过期时间为3天
let data = window.localStorage.getItem(key)
if (!data) return null
let dataObj = JSON.parse(data)
// 与过期时间比较
if (new Date().getTime() - dataObj.time > exp) {
// 过期删除返回null
removeStore(key)
console.log('信息已过期')
return null
} else {
return JSON.parse(dataObj.data)
}
}
/**
* 删除localStorage
*/
export const removeStore = name => {
if (!name) return;
window.localStorage.removeItem(name);
};