//格式化日期 export function getDate(type) { const date = new Date(); let year = date.getFullYear(); let month = date.getMonth() + 1; let day = date.getDate(); if (type === 'end') { day = day + 1; } month = month > 9 ? month : '0' + month; day = day > 9 ? day : '0' + day; return `${year}-${month}-${day}`; } export function getDateNew(type = 'day') { const date = new Date(); let year = date.getFullYear(); let month = date.getMonth() + 1; let day = date.getDate(); if (type === 'end') { day = day + 1; } month = month > 9 ? month : '0' + month; day = day > 9 ? day : '0' + day; if (type === 'year') return `${year}` if (type === 'month') return `${year}-${month}` return `${year}-${month}-${day}`; } export function initDict(originalData) { let obj = {} let arr = originalData.map(item => { const key = Object.keys(item)[0] const value = item[key] obj[key] = value return { label: value, value: parseInt(key) } }) return [arr, obj] } export function stopScroll() { var box = function(e) { passive: false; }; document.body.style.overflow = 'hidden'; document.addEventListener("touchmove", box, false); } export function startScroll() { var box = function(e) { passive: false }; document.body.style.overflow = ''; //出现滚动条 document.removeEventListener("touchmove", box, false); } // 生成随机数 export const getRuleNo = (suffix = 'R') => { const randomNum = Math.floor(Math.random() * 1000000) return `${suffix}${parseTime(new Date(), '{y}{m}{d}')}${randomNum}` } export function parseTime(time, cFormat) { if (arguments.length === 0 || !time) { return null } const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}' let date if (typeof time === 'object') { date = time } else { if (typeof time === 'string') { if (/^[0-9]+$/.test(time)) { // support "1548221490638" time = parseInt(time) } else { // support safari // https://stackoverflow.com/questions/4310953/invalid-date-in-safari time = time.replace(new RegExp(/-/gm), '/') } } 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(/{([ymdhisa])+}/g, (result, key) => { const value = formatObj[key] // Note: getDay() returns 0 on Sunday if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] } return value.toString().padStart(2, '0') }) return time_str } /** * 将毫秒,转换成时间字符串。例如说,xx 分钟 * * @param ms 毫秒 * @returns {string} 字符串 */ export function getDates(ms) { const day = Math.floor(ms / (24 * 60 * 60 * 1000)); const hour = Math.floor((ms / (60 * 60 * 1000) - day * 24)); const minute = Math.floor(((ms / (60 * 1000)) - day * 24 * 60 - hour * 60)); const second = Math.floor((ms / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60)); if (day > 0) { return day + "天" + hour + "小时" + minute + "分钟"; } if (hour > 0) { return hour + "小时" + minute + "分钟"; } if (minute > 0) { return minute + "分钟"; } if (second > 0) { return second + "秒"; } else { return 0 + "秒"; } } //机构一维数组转树形结构 export function toTreeData(option) { var _a, _b; if (Array.isArray(option)) { option = { data: arguments[0], idField: arguments[1], parentIdField: arguments[2], childrenField: arguments[3], parentId: arguments[4], addParentIds: arguments[5], parentIdsField: arguments[6], parentIds: arguments[7] }; } const data = option.data; const idField = option.idField || option.idKey || "id"; const parentIdField = option.parentIdField || option.pidKey || "parentId"; const childrenField = option.childrenField || option.childKey || "children"; const parentIdIsNull = typeof option.parentId === "undefined" && typeof option.pid === "undefined"; const parentId = parentIdIsNull ? [] : (_a = option.parentId) != null ? _a : option.pid; const addParentIds = (_b = option.addParentIds) != null ? _b : option.addPIds; const parentIdsField = option.parentIdsField || option.parentsKey || "parentIds"; const parentIds = option.parentIds; if (parentIdIsNull) { data.forEach((d) => { let flag = true; for (let i = 0; i < data.length; i++) { if (d[parentIdField] == data[i][idField]) { flag = false; break; } } if (flag) { parentId.push(d[parentIdField]); } }); } const result = []; data.forEach((d) => { if (d[idField] == d[parentIdField]) { throw new Error( [ "data error: {", idField + ": ", JSON.stringify(d[idField]), parentIdField + ": ", JSON.stringify(d[parentIdField]), "}" ].join("") ); } const isArr = Array.isArray(parentId); const isParent = isArr ? parentId.includes(d[parentIdField]) : d[parentIdField] == parentId; if (isParent) { const r = { ...d }; const children = toTreeData({ data, idField, parentIdField, childrenField, parentId: d[idField], addParentIds, parentIdsField, parentIds: (parentIds != null ? parentIds : []).concat([d[idField]]) }); if (children.length > 0) { r[childrenField] = children; } if (addParentIds) { r[parentIdsField] = parentIds != null ? parentIds : []; } result.push(r); } }); return result; } //判断搜索条件是否为空的函数 export function isObjectEmpty(obj) { for (const key in obj) { if (obj.hasOwnProperty(key)) { const value = obj[key]; if (typeof value === 'object' && value !== null) { if (Array.isArray(value)) { if (value.length > 0) { return false; } } else { if (!isObjectEmpty(value)) { return false; } } } else if (value !== null && value !== undefined && value !== '' && value !== 0 && value !== false) { return false; } } } return true; } //指定属性,对由对象组成的数组去重 export function uniqueByProperty(arr, property) { const map = new Map(); arr.forEach(item => { const key = item[property]; if (!map.has(key)) { map.set(key, item); } }); return Array.from(map.values()); }