From dd5de82ee07abe9c27974012c757773917200cbf Mon Sep 17 00:00:00 2001 From: yuping <82253452@qq.com> Date: Tue, 28 Feb 2023 01:27:16 +0800 Subject: [PATCH] -- fix bug --- src/utils/utils.js | 298 +++++++++++++++++++++++---------------------- 1 file changed, 152 insertions(+), 146 deletions(-) diff --git a/src/utils/utils.js b/src/utils/utils.js index c8a0d54a..0f53bbba 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -1,191 +1,197 @@ -import store from '@/store' +import store from "@/store"; export function traverseArr(arr, traverseObj, saveOld = false) { - const newArr = []; - if (arr.length !== 0) { - arr.forEach((item) => { - let obj = {}; - if (saveOld) { - obj = { - ...item, - }; + const newArr = []; + if (arr.length !== 0) { + arr.forEach((item) => { + let obj = {}; + if (saveOld) { + obj = { + ...item, + }; + } + if (Object.keys(traverseObj).length !== 0) { + for (const key in traverseObj) { + if (typeof traverseObj[key] === "string") { + obj[key] = item[traverseObj[key]]; + } else { + if (item[key] && item[key].length !== 0) { + obj[key] = traverseArr(item[key], traverseObj); } - if (Object.keys(traverseObj).length !== 0) { - for (const key in traverseObj) { - if (typeof traverseObj[key] === "string") { - obj[key] = item[traverseObj[key]]; - } else { - if (item[key] && item[key].length !== 0) { - obj[key] = traverseArr(item[key], traverseObj); - } - } - } - } - newArr.push(obj); - }); - } - // console.log('newArr', newArr) - return newArr; + } + } + } + newArr.push(obj); + }); + } + // console.log('newArr', newArr) + return newArr; } -const admin = [5, 6, 8, 9, 11, 12] +const admin = [5, 6, 8, 9, 11, 12]; + //检查 管理权和归属权 export function checkPer(per) { - if (store?.state?.userInfo?.roleList.some(t => t.code === 'learning-admin')) { - return true - } - if (!per) { - return false - } - return (per + "").split(',').some(t => admin.some(s => s == t)) + if (store?.state?.userInfo?.roleList.some(t => t.code === "learning-admin")) { + return true; + } + if (!per) { + return false; + } + return (per + "").split(",").some(t => admin.some(s => s == t)); } -const adminOwner = [6,9,12] + +const adminOwner = [6, 9, 12]; + //单独检查是否有归属权 export function checkOwner(per) { - return (per + "").split(',').some(t => adminOwner.some(s => s == t)) -} -export function checkMenu(path='') { - return store?.state?.menus.some(t => path.split(',').some(s=>'/'+s===t)); + if (!per) { + return true; + } + return (per + "").split(",").some(t => adminOwner.some(s => s == t)); } +export function checkMenu(path = "") { + return store?.state?.menus.some(t => path.split(",").some(s => "/" + s === t)); +} export function deepClone(obj) { - let result = typeof obj.splice === "function" ? [] : {}; - if (obj && typeof obj === "object") { - for (let key in obj) { - if (obj[key] && typeof obj[key] === "object") { - result[key] = deepClone(obj[key]); - } else { - result[key] = obj[key]; - } - } - return result; + let result = typeof obj.splice === "function" ? [] : {}; + if (obj && typeof obj === "object") { + for (let key in obj) { + if (obj[key] && typeof obj[key] === "object") { + result[key] = deepClone(obj[key]); + } else { + result[key] = obj[key]; + } } - return obj; + return result; + } + return obj; } export function deepCloneFilterString(obj, fillterKeys) { - let result = typeof obj.splice === "function" ? [] : {}; - if (obj && typeof obj === "object") { - for (let key in obj) { - if (obj[key] && typeof obj[key] === "object") { - result[key] = deepCloneFilterString(obj[key], fillterKeys); - } else { - result[key] = fillterKeys.includes(key) ? obj[key] : String(obj[key]); - } - } - return result; + let result = typeof obj.splice === "function" ? [] : {}; + if (obj && typeof obj === "object") { + for (let key in obj) { + if (obj[key] && typeof obj[key] === "object") { + result[key] = deepCloneFilterString(obj[key], fillterKeys); + } else { + result[key] = fillterKeys.includes(key) ? obj[key] : String(obj[key]); + } } - return obj; + return result; + } + return obj; } export function sortBy(arr, key) { - return arr.sort((x, y) => { - const valueX = parseInt(x[key]); - const valueY = parseInt(y[key]); - if (valueX > valueY) { - return 1; - } - if (valueX < valueY) { - return -1; - } - }); + return arr.sort((x, y) => { + const valueX = parseInt(x[key]); + const valueY = parseInt(y[key]); + if (valueX > valueY) { + return 1; + } + if (valueX < valueY) { + return -1; + } + }); } export function filterCommon(arr, key) { - let newData = {}; - arr.forEach((item) => { - //新建属性名 - if (Object.keys(newData).indexOf("" + item[key]) === -1) { - newData[item[key]] = []; - } - //对应插入属性值 - newData["" + item[key]].push(item); - }); - return newData; + let newData = {}; + arr.forEach((item) => { + //新建属性名 + if (Object.keys(newData).indexOf("" + item[key]) === -1) { + newData[item[key]] = []; + } + //对应插入属性值 + newData["" + item[key]].push(item); + }); + return newData; } export function getdateToTime(date) { - let now = new Date(parseInt(date)), - y = now.getFullYear(), - m = now.getMonth() + 1, - d = now.getDate(), - hh = now.getHours(), - mm = now.getMinutes(); - return `${y}-${m < 10 ? "0" + m : m}-${d < 10 ? "0" + d : d} ${hh}:${mm}`; + let now = new Date(parseInt(date)), + y = now.getFullYear(), + m = now.getMonth() + 1, + d = now.getDate(), + hh = now.getHours(), + mm = now.getMinutes(); + return `${y}-${m < 10 ? "0" + m : m}-${d < 10 ? "0" + d : d} ${hh}:${mm}`; } export function getdateToDate(date) { - let now = new Date(parseInt(date)), - y = now.getFullYear(), - m = now.getMonth() + 1, - d = now.getDate(); - return `${y}${m < 10 ? "0" + m : m}${d < 10 ? "0" + d : d}`; + let now = new Date(parseInt(date)), + y = now.getFullYear(), + m = now.getMonth() + 1, + d = now.getDate(); + return `${y}${m < 10 ? "0" + m : m}${d < 10 ? "0" + d : d}`; } //计算两个时间之间的时间差 多少天时分秒 export function intervalTime(startTime) { - const curTime = new Date().getTime(); //计算当前时间戳 - const date3 = curTime - startTime; //时间差的毫秒数 - //计算出相差天数 - const days = Math.floor(date3 / (24 * 3600 * 1000)); - //计算出小时数 - const leave1 = date3 % (24 * 3600 * 1000); //计算天数后剩余的毫秒数 - const hours = Math.floor(leave1 / (3600 * 1000)); - //计算相差分钟数 - const leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数 - const minutes = Math.floor(leave2 / (60 * 1000)); - //计算相差秒数 - const leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数 - const seconds = Math.round(leave3 / 1000); - return { - days, - hours, - minutes, - seconds, - }; + const curTime = new Date().getTime(); //计算当前时间戳 + const date3 = curTime - startTime; //时间差的毫秒数 + //计算出相差天数 + const days = Math.floor(date3 / (24 * 3600 * 1000)); + //计算出小时数 + const leave1 = date3 % (24 * 3600 * 1000); //计算天数后剩余的毫秒数 + const hours = Math.floor(leave1 / (3600 * 1000)); + //计算相差分钟数 + const leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数 + const minutes = Math.floor(leave2 / (60 * 1000)); + //计算相差秒数 + const leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数 + const seconds = Math.round(leave3 / 1000); + return { + days, + hours, + minutes, + seconds, + }; } // 分片处理 export function batchLoadList( - sourceData, - dataTotal, - splitNumber = 10, - callback, - complete + sourceData, + dataTotal, + splitNumber = 10, + callback, + complete ) { - if (sourceData.length <= splitNumber) { - typeof callback === "function" && callback(sourceData); + if (sourceData.length <= splitNumber) { + typeof callback === "function" && callback(sourceData); + typeof callback === "function" && complete(); + return; + } + let first = 0; + const intTime = parseInt(String(dataTotal / splitNumber)); + const floatTime = sourceData.length % splitNumber; + const total = intTime + (floatTime > 0 ? 1 : 0); + for (let i = 0; i < total; i += 1) { + const end = first + splitNumber; + const splitArray = sourceData.slice(first, end); + setTimeout(() => { + typeof callback === "function" && callback(splitArray); + if (i === total - 1) { + // 分片处理完成 typeof callback === "function" && complete(); - return; - } - let first = 0; - const intTime = parseInt(String(dataTotal / splitNumber)); - const floatTime = sourceData.length % splitNumber; - const total = intTime + (floatTime > 0 ? 1 : 0); - for (let i = 0; i < total; i += 1) { - const end = first + splitNumber; - const splitArray = sourceData.slice(first, end); - setTimeout(() => { - typeof callback === "function" && callback(splitArray); - if (i === total - 1) { - // 分片处理完成 - typeof callback === "function" && complete(); - } - }); - first = end; - } + } + }); + first = end; + } } export function newFile(code) { - const blob = new Blob([code], { - type: "application/vnd.ms-excel", - }); - const linkNode = document.createElement("a"); - linkNode.style.display = "none"; - linkNode.href = URL.createObjectURL(blob); //生成一个Blob URL - document.body.appendChild(linkNode); - linkNode.click(); //模拟在按钮上的一次鼠标单击 - URL.revokeObjectURL(linkNode.href); // 释放URL 对象 - document.body.removeChild(linkNode); + const blob = new Blob([code], { + type: "application/vnd.ms-excel", + }); + const linkNode = document.createElement("a"); + linkNode.style.display = "none"; + linkNode.href = URL.createObjectURL(blob); //生成一个Blob URL + document.body.appendChild(linkNode); + linkNode.click(); //模拟在按钮上的一次鼠标单击 + URL.revokeObjectURL(linkNode.href); // 释放URL 对象 + document.body.removeChild(linkNode); }