UNPKG

vue2-s-cli

Version:

脚手架

360 lines (336 loc) 10.6 kB
// 获取相应日期 const getDate = (json) => { let newDate = new Date(Number(json.times || 0)); let year = newDate.getFullYear() + ""; let month = newDate.getMonth() + 1; let day = newDate.getDate(); let hour = newDate.getHours(); let minute = newDate.getMinutes(); let second = newDate.getSeconds(); let str = ""; // 不够10前面补0 month = month < 10 ? "0" + month : month + ""; day = day < 10 ? "0" + day : day + ""; hour = hour < 10 ? "0" + hour : hour + ""; minute = minute < 10 ? "0" + minute : minute + ""; second = second < 10 ? "0" + second : second + ""; switch (json.type) { case "date": str = `${year}-${month}-${day}`; break; case "minute": str = `${year}-${month}-${day} ${hour}:${minute}`; break; case "second": str = `${year}-${month}-${day} ${hour}:${minute}:${second}`; break; case "secondUnderline": str = `${year}_${month}_${day} ${hour}_${minute}_${second}`; break; case "dateUnderline": str = `${year}_${month}_${day}`; break; } return str; }; // 格式化日期 const formatDate = (date = new Date(), format = "YY-MM-DD hh:mm:ss") => { const obj = { YY: date.getFullYear() + "", // 年 MM: date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1 + "", // 月 DD: date.getDate() < 10 ? "0" + date.getDate() : date.getDate() + "", // 日 hh: date.getHours() < 10 ? "0" + date.getHours() : date.getHours() + "", // 时 mm: date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes() + "", // 分 ss: date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds() + "", // 秒 }; return [ { id: format.indexOf("YY"), v: obj.YY + format.charAt(format.indexOf("YY") + 2), }, { id: format.indexOf("MM"), v: obj.MM + format.charAt(format.indexOf("MM") + 2), }, { id: format.indexOf("DD"), v: obj.DD + format.charAt(format.indexOf("DD") + 2), }, { id: format.indexOf("hh"), v: obj.hh + format.charAt(format.indexOf("hh") + 2), }, { id: format.indexOf("mm"), v: obj.mm + format.charAt(format.indexOf("mm") + 2), }, { id: format.indexOf("ss"), v: obj.ss + format.charAt(format.indexOf("ss") + 2), }, ] .filter((v) => v.id > -1) .reduce((a, b) => a + b.v, ""); }; /** * 格式化时间 * @param {*} time 毫秒 * @param {*} format 格式 */ const formatTime = (time, format = "hh:mm:ss") => { const h = parseInt(time / 1000 / 60 / 60); const m = parseInt((time / 1000 / 60) % 60); const s = parseInt((time / 1000) % 60); const obj = { hh: h < 10 ? `0${h}` : `${h}`, // 时 mm: m < 10 ? `0${m}` : `${m}`, // 分 ss: s < 10 ? `0${s}` : `${s}`, // 秒 }; return [ { id: format.indexOf("hh"), v: obj.hh + format.charAt(format.indexOf("hh") + 2), }, { id: format.indexOf("mm"), v: obj.mm + format.charAt(format.indexOf("mm") + 2), }, { id: format.indexOf("ss"), v: obj.ss + format.charAt(format.indexOf("ss") + 2), }, ] .filter((v) => v.id > -1) .reduce((a, b) => a + b.v, ""); }; // 格式化数据 const formatLimit = (val, type) => { let str = String(val || ""); switch (type) { case "toThousands": if (str.indexOf(".") > -1) { str = str.replace(/(\d)(?=(\d{3})+\.)/g, "$1,"); } else { str = str.replace(/(\d)(?=(?:\d{3})+$)/g, "$1,"); } break; } return str; }; /** * 本地存储 * @param {*} key 存储对应的key名称 * @param {*} data 存储的数据 * @param {*} mode 默认false,false存sessionStorage,true存localStorage */ const saveStorege = (key, data, mode = false) => { let saveData = data; if (mode) { localStorage.setItem(key, JSON.stringify(saveData)); } else { let obj = sessionStorage.getItem(key); if (obj) { obj = JSON.parse(obj); if (Object.prototype.toString.call(obj) === "[object Object]") { saveData = { ...obj, ...data }; } } sessionStorage.setItem(key, JSON.stringify(saveData)); } }; /** * 获取浏览器本地存储数据 * @param {string} key 键值 * @param {boolen} mode 默认false,false取sessionStorage,true取localStorage */ const getStorage = (key, mode = false) => { if (mode) { return (localStorage.getItem(key) && JSON.parse(localStorage.getItem(key))) || null; } return (sessionStorage.getItem(key) && JSON.parse(sessionStorage.getItem(key))) || null; }; // 获取path最后的路径 const getEndPath = (data) => { const text = data.text; const sign = data.sign; const index = text.lastIndexOf(sign); const str = text.substring(index, text.length); return str; }; // 获取url中的参数 const getUrlParam = (url, key) => { let arr = {}; url.replace(/\??(\w+)=(\w+)&?/g, function (match, matchKey, matchValue) { // 如果同名,只取最后一个 arr[matchKey] = matchValue; }); if (!key) { return arr; } else { for (const ele in arr) { if (ele === key) { return arr[ele]; } } return ""; } }; // 替换url参数,如果存在则替换,不存在则增加 const replaceParamVal = (url, paramName, replaceVal) => { let oUrl = url.toString(); if (oUrl.indexOf(paramName) > -1) { // 存在 let re = eval("/(" + paramName + "=)([^&]*)/gi"); oUrl = oUrl.replace(re, paramName + "=" + replaceVal); } else { // 不存在 let sign = oUrl.indexOf("?") > -1 ? "&" : "?"; oUrl = `${oUrl}${sign}${paramName}=${replaceVal}`; } return oUrl; }; // 获取元素到页面顶部的距离 const getElementToPageTop = (el) => { if (el.offsetParent) { return getElementToPageTop(el.offsetParent) + el.offsetTop; } return el.offsetTop; }; const formatChinaNumber = (money) => { //汉字的数字 let cnNums = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); //基本单位 let cnIntRadice = new Array("", "拾", "佰", "仟"); //对应整数部分扩展单位 let cnIntUnits = new Array("", "万", "亿", "兆"); //对应小数部分单位 let cnDecUnits = new Array("角", "分", "毫", "厘"); //整数金额时后面跟的字符 let cnInteger = "整"; //整型完以后的单位 let cnIntLast = "元"; //最大处理的数字 let maxNum = 999999999999999.9999; //金额整数部分 let integerNum; //金额小数部分 let decimalNum; //输出的中文金额字符串 let chineseStr = ""; //分离金额后用的数组,预定义 let parts; if (money == "") { return ""; } money = parseFloat(money); if (money >= maxNum) { //超出最大处理数字 return ""; } if (money == 0) { chineseStr = cnNums[0] + cnIntLast + cnInteger; return chineseStr; } //转换为字符串 money = money.toString(); if (money.indexOf(".") == -1) { integerNum = money; decimalNum = ""; } else { parts = money.split("."); integerNum = parts[0]; decimalNum = parts[1].substr(0, 4); } //获取整型部分转换 if (parseInt(integerNum, 10) > 0) { let zeroCount = 0; let IntLen = integerNum.length; for (let i = 0; i < IntLen; i++) { let n = integerNum.substr(i, 1); let p = IntLen - i - 1; let q = p / 4; let m = p % 4; if (n == "0") { zeroCount++; } else { if (zeroCount > 0) { chineseStr += cnNums[0]; } //归零 zeroCount = 0; chineseStr += cnNums[parseInt(n)] + cnIntRadice[m]; } if (m == 0 && zeroCount < 4) { chineseStr += cnIntUnits[q]; } } chineseStr += cnIntLast; } //小数部分 if (decimalNum != "") { let decLen = decimalNum.length; for (let i = 0; i < decLen; i++) { let n = decimalNum.substr(i, 1); if (n != "0") { chineseStr += cnNums[Number(n)] + cnDecUnits[i]; } } } if (chineseStr == "") { chineseStr += cnNums[0] + cnIntLast + cnInteger; } else if (decimalNum == "") { chineseStr += cnInteger; } return chineseStr; }; /** * 递归遍历,替换字段名称 * @param {*} arr 需要处理的数组 * @param {*} filedArr 替换成的字段名对象 * @param {*} childs 遍历的子级数组 */ const recursionReplaceFiled = (arr) => { let initArr = arr || []; // let banFiled = []; // 废弃字段 const len = initArr.length; for (let i = 0; i < len; i++) { let item = initArr[i] || {}; let members = item.members || []; const sub_department = item.sub_department || []; if (members.length) { members.forEach((item) => { item["leaf"] = true; item["name"] = item.username || ""; }); item["sub_department"] = [...members, ...sub_department]; } if (sub_department.length) { recursionReplaceFiled(sub_department); } } return initArr; }; // 下载文件 const downloadFile = (data, isFetch = "true") => { const fileName = data.fileName || ""; const fileUrl = data.fileUrl || ""; // 浏览器支持fetch则用blob下载,避免浏览器点击a标签,跳转到新页面预览的行为 if (window.fetch && isFetch) { fetch(fileUrl) .then((res) => res.blob()) .then((blob) => { let a = document.createElement("a"); let url = window.URL.createObjectURL(blob); a.href = url; a.download = fileName; a.click(); }); } else { let a = document.createElement("a"); a.href = fileUrl; a.target = "_blank"; a.download = fileName; a.click(); } }; export default { formatDate, // 格式化-日期 formatTime, // 格式化-时间间隔 formatLimit, // 格式化-数据 saveStorege, // 本地存储 getStorage, // 获取本地存储数据 getEndPath, // 获取最后的路径 getUrlParam, // 获取url中的参数 replaceParamVal, // 替换url参数,如果存在则替换,不存在则增加 getElementToPageTop, // 获取元素到页面顶部的距离 formatChinaNumber, // 阿拉伯数字转换成中文大写数字 recursionReplaceFiled, // 递归遍历替换字段名称 downloadFile, // 下载文件 getDate };