// 全局公共js方法库 2024-12-08 export default { //获取考试背景对应的颜色 getExamBackgroundColor(type) { let result = "#F56C6C"; const examTypesColor = [ { type: 1, title: "期末", color: "#F56C6C", background: "#F56C6C", }, //期末 { type: 2, title: "期中", color: "#3ba272", background: "#3ba272", }, //期中 { type: 3, title: "模拟", color: "#ea7acb", background: "#ea7acb", }, //模拟 { type: 4, title: "月考", color: "#fac858", background: "#fac858", }, //月考 { type: 5, title: "周测", color: "#995fb3", background: "#995fb3", }, //周测 { type: 6, title: "平时", color: "#72C0DD", background: "#72C0DD", }, //平时 ]; for (let i = 0; i < examTypesColor.length; i++) { if (examTypesColor[i].type == type || examTypesColor[i].title == type) { result = examTypesColor[i].background; break; } } // console.log("打印颜色值",type,result); return result; }, //获取五率对应的颜色值 getFiveRateColor(type) { let list=[ { name: "top", color: "#5470C6", }, { name: "excellent", color: "#3BA272", }, { name: "good", color: "#FAC858", }, { name: "pass", color: "#995FB3", }, { name: "low", color: "#EE6666", } ];//五率颜色配置 return list.find((item) => item.name === type)?.color || "#5470C6";//默认5470C6颜色 }, //获取五率对应的颜色值 getSchoolFiveRateColor(type) { let list=[ { name: "high", color: "#5470C6", }, { name: "good", color: "#3BA272", }, { name: "fine", color: "#FAC858", }, { name: "pass", color: "#995FB3", }, { name: "low", color: "#EE6666", } ];//五率颜色配置 return list.find((item) => item.name === type)?.color || "#5470C6";//默认5470C6颜色 }, // 获取分析报告成绩分析中默认的20个颜色 getScorePerformanceAnalysis() { return [ "#5470C6", "#3BA272", "#EE6666", "#FAC858", "#995FB3", "#72C0DD", "#90CB75", "#EA7ACB", "#FC8451", "#65789B", "#178BD3", "#26A616", "#A6129E", "#D3A141", "#234098", "#047640", "#B43535", "#848BDC", "#D6AF83", "#84313D", //20个颜色一组 "#5470C6", "#3BA272", "#EE6666", "#FAC858", "#995FB3", "#72C0DD", "#90CB75", "#EA7ACB", "#FC8451", "#65789B", "#178BD3", "#26A616", "#A6129E", "#D3A141", "#234098", "#047640", "#B43535", "#848BDC", "#D6AF83", "#84313D", // "#5470C6", "#3BA272", "#EE6666", "#FAC858", "#995FB3", "#72C0DD", "#90CB75", "#EA7ACB", "#FC8451", "#65789B", "#178BD3", "#26A616", "#A6129E", "#D3A141", "#234098", "#047640", "#B43535", "#848BDC", "#D6AF83", "#84313D", ]; }, //获取G组 G10-G1对应的颜色值 getGGroupColor() { return [ { name: "G1", color: "#5470C6", }, { name: "G2", color: "#90CB75", }, { name: "G3", color: "#D3A141", }, { name: "G4", color: "#EE6666", }, { name: "G5", color: "#72C0DD", }, { name: "G6", color: "#3BA272", }, { name: "G7", color: "#FC8451", }, { name: "G8", color: "#995FB3", }, { name: "G9", color: "#EA7ACB", }, { name: "G10", color: "#FAC858", }, ]; }, //获取G组 g10-g1对应的颜色值 getgGroupColor() { return [ { name: "g1", color: "#5470C6", }, { name: "g2", color: "#90CB75", }, { name: "g3", color: "#D3A141", }, { name: "g4", color: "#EE6666", }, { name: "g5", color: "#72C0DD", }, { name: "g6", color: "#3BA272", }, { name: "g7", color: "#FC8451", }, { name: "g8", color: "#995FB3", }, { name: "g9", color: "#EA7ACB", }, { name: "g10", color: "#FAC858", }, ]; }, //获取百分比 type progress 表示进度条使用 getPercentage(num1, num2, type) { let result = 0; let percentage = 0; if (num1 && num2) { percentage = (parseFloat(num1) / parseFloat(num2)).toFixed(2); } result = Math.round(percentage * 100); // console.log("num1,num2",num1,num2,percentage,result); if (type == "progress") { //进度条的值不能超100% if (result > 100) { result = 100; } } if (result < 0) { result = 0; } // console.log("打印结果",result); return result; }, //获取当前日期 返回的格式为yyyy-MM-dd hh:mm:ss getNowDate(format = "yyyy-mm-dd") { const now = new Date(); const year = now.getFullYear(); const month = String(now.getMonth() + 1).padStart(2, "0"); const date = String(now.getDate()).padStart(2, "0"); const hours = String(now.getHours()).padStart(2, "0"); const minutes = String(now.getMinutes()).padStart(2, "0"); const seconds = String(now.getSeconds()).padStart(2, "0"); switch (format) { case "yyyy-mm-dd": return `${year}-${month}-${date}`; case "yyyy-mm-dd hh:mm:ss": return `${year}-${month}-${date} ${hours}:${minutes}:${seconds}`; case "yyyy-mm-dd hh:mm": return `${year}-${month}-${date} ${hours}:${minutes}`; // 可以根据需要添加更多格式 case "yyyy年mm月dd日 hh:mm:ss": return `${year}年${month}月${date}日 ${hours}:${minutes}:${seconds}`; default: return `${year}-${month}-${date} ${hours}:${minutes}:${seconds}`; } }, // 时间戳转换为时间字符串 getTimestamp(timestamp, format = 'YYYY-MM-DD HH:mm:ss') { // console.log('timestamp', timestamp); if (!timestamp && timestamp !== 0) return ''; // 处理不同格式的时间戳 let timeValue = timestamp; // 如果是字符串,尝试转换为数字 if (typeof timeValue === 'string') { timeValue = Number(timeValue); } // 检查是否为有效数字 if (isNaN(timeValue) || timeValue < 0) return ''; // 处理秒级时间戳(10位数字) if (timeValue.toString().length === 10) { timeValue = timeValue * 1000; } // 处理毫秒级时间戳(13位数字) const date = new Date(timeValue); // 检查日期是否有效 if (isNaN(date.getTime())) return ''; const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); const hours = String(date.getHours()).padStart(2, '0'); const minutes = String(date.getMinutes()).padStart(2, '0'); const seconds = String(date.getSeconds()).padStart(2, '0'); return format .replace('YYYY', year) .replace('MM', month) .replace('DD', day) .replace('HH', hours) .replace('mm', minutes) .replace('ss', seconds); }, // 保留小数点后几位 str 数值 fixed 小数点后保留位数 floatNum(str, fixed) { // console.log("打印参数",str,fixed); if (str == null || str == undefined || str == "") { return 0; } else { const num = parseFloat(str); if (isNaN(num)) { throw new Error("Invalid number string"); } return parseFloat(num.toFixed(fixed)); } }, // 去掉小数点后面为0的 如果不为0 最多只保留2位小数 getFormatNumber(numberStr) { // 尝试将字符串转为数字 const num = parseFloat(numberStr); // 检查是否为NaN(非数字情况) if (isNaN(num)) { return numberStr; } // 检查是否为整数(小数点后全为0) if (num % 1 === 0) { return num.toString(); } // 保留最多2位小数,并去除末尾的0 let formatted = num.toFixed(2); // 如果小数点后都是0,则返回整数形式 if (formatted.endsWith('.00')) { return formatted.split('.')[0]; } // 去除末尾的0(如1.50 → 1.5) formatted = formatted.replace(/\.?0+$/, ''); return formatted; }, //过滤掉html标签的方法 getStripHtmlTags(str) { // 创建一个新的 div 元素 const tempDiv = document.createElement("div"); // 将 HTML 字符串设置为 div 的 innerHTML tempDiv.innerHTML = str; // 返回 div 的 textContent,这将去除所有 HTML 标签 return tempDiv.textContent || tempDiv.innerText; }, //获取评阅类型 单评还是双评等 getRatingType(type) { let result = "单评"; if (type == 1) { result = "单评"; } else if (type == 2) { result = "2评0补0审"; } else if (type == 3) { result = "2评1补0审"; } else if (type == 4) { result = "2评0补1审"; } else if (type == 5) { result = "2评1补1审"; } return result; }, //根据起始题号,结束题号,题号间隔获取题号列表 getTopicNumberList(startNumber, endNumber, interval) { const topicNumberList = []; for (let i = startNumber; i <= endNumber; i += interval) { topicNumberList.push(i); } // console.log("打印题号列表",topicNumberList); return topicNumberList; }, //获取科目图片名称 根据汉字 getSubjectsName(value,count,type) { let name=value; if(count==0) { } else { switch (count) { case 1: name="其他"; break; case 2: name="二科"; break; case 3: name="三科"; break; case 4: name="四科"; break; case 5: name="五科"; break; case 6: name="六科"; break; case 7: name="七科"; break; case 8: name="八科"; break; case 9: name="九科"; break; } } const subjectList = [ { name: "生物", image: "biology.png", color: "#3BA272", }, { name: "化学", image: "chemistry.png", color: "#73C0DE", }, { name: "语文", image: "chinese.png", color: "#91CC75", }, { name: "道德与法治", image: "daofa.png", color: "#FF869D", }, { name: "八科", image: "eight_subject.png", color: "#3BA272", }, { name: "英语", image: "english.png", color: "#EE6666", }, { name: "五科", image: "five_subject.png", color: "#63A1FF", }, { name: "四科", image: "four_subject.png", color: "#FF869D", }, { name: "地理", image: "geography.png", color: "#9A60B4", }, { name: "历史", image: "history.png", color: "#FC8452", }, { name: "信息", image: "information.png", color: "#63A1FF", }, { name: "数学", image: "math.png", color: "#FAC858", }, { name: "九科", image: "nine_subject.png", color: "#EE6666", }, { name: "其他", image: "other.png", color: "#C495FA", }, { name: "物理", image: "physics.png", color: "#817BE2", }, { name: "政治", image: "politics.png", color: "#63A1FF", }, { name: "七科", image: "seven_subject.png", color: "#FC8452", }, { name: "六科", image: "six_subject.png", color: "#9A60B4", }, { name: "体育", image: "sport.png", color: "#FF8B8B", }, { name: "三科", image: "three_subject.png", color: "#5CC1F6", }, { name: "二科", image: "two_subject.webp", color: "#C495FA", }, { name: "总分", image: "totalScore.png", color: "#325AD4", }, { name: "通用", image: "tongyong.png", color: "#5CC1F6", }, { name: "地理学考", image: "geography_exam.webp", color: "#9A60B4", }, { name: "化学学考", image: "chemistry_exam.webp", color: "#73C0DE", }, { name: "历史学考", image: "history_exam.webp", color: "#FC8452", }, { name: "生物学考", image: "biology_exam.webp", color: "#3BA272", }, { name: "物理学考", image: "physics_exam.webp", color: "#817BE2", }, { name: "政治学考", image: "politics_exam.webp", color: "#63A1FF", } ]; let result = subjectList.find((item) => item.name === name); if(result) { if(type && type == 'color') { return result.color; }else { return result.image; } } else { if(type && type == 'color') { return '#C495FA'; }else { return "other.png" } } }, //包含0的正整数 包含0的正整数但不是以0开头的多位正整数 '00'、'01' 和 '0001' 都不会被匹配 isNumber(str){ const regex = /^(?:[1-9][0-9]*|0)$/; return regex.test(str); }, //根据当前值 获取最大值 echarts 图表使用 getMaxValue(value) { const thresholdMap =[ { maxThreshold:0.3,//最大阈值0-0.6 bound:0.3,//边界值 }, { maxThreshold:0.6,//最大阈值0-0.6 bound:0.6,//边界值 }, { maxThreshold:1,//最大阈值 0.6 - 1 bound:1,//边界值 }, { maxThreshold:1.5,//最大阈值 0.6 - 1 bound:1.5,//边界值 }, { maxThreshold:2,//最大阈值 bound:2,//边界值 }, { maxThreshold:4,//最大阈值 bound:4,//边界值 }, { maxThreshold:8,//最大阈值 bound:8,//边界值 }, { maxThreshold:10,//最大阈值 bound:10,//边界值 }, { maxThreshold:20,//最大阈值 bound:20,//边界值 }, { maxThreshold:30,//最大阈值 bound:30,//边界值 }, { maxThreshold:40,//最大阈值 bound:40,//边界值 }, { maxThreshold:50,//最大阈值 bound:50,//边界值 }, { maxThreshold:60,//最大阈值 bound:60,//边界值 }, { maxThreshold:70,//最大阈值 bound:70,//边界值 }, { maxThreshold:80,//最大阈值 bound:80,//边界值 }, { maxThreshold:90,//最大阈值 bound:90,//边界值 }, { maxThreshold:100,//最大阈值 bound:100,//边界值 }, { maxThreshold:120,//最大阈值 bound:120,//边界值 }, { maxThreshold:150,//最大阈值 bound:150,//边界值 }, { maxThreshold:180,//最大阈值 bound:180,//边界值 }, { maxThreshold:200,//最大阈值 bound:200,//边界值 }, { maxThreshold:250,//最大阈值 bound:250,//边界值 }, { maxThreshold:200,//最大阈值 bound:200,//边界值 }, { maxThreshold:300,//最大阈值 bound:300,//边界值 }, { maxThreshold:350,//最大阈值 bound:350,//边界值 }, { maxThreshold:400,//最大阈值 bound:400,//边界值 }, { maxThreshold:450,//最大阈值 bound:450,//边界值 }, { maxThreshold:500,//最大阈值 bound:500,//边界值 }, { maxThreshold:600,//最大阈值 bound:600,//边界值 }, { maxThreshold:700,//最大阈值 bound:700,//边界值 }, ];//配置区间规则 //查找匹配的边界值 const matchedRule = thresholdMap.find(({ maxThreshold }) => value < maxThreshold); // 处理超过阈值的情况(≥5) const bound = matchedRule ? matchedRule.bound : Math.ceil((value) / 10) * 10; // console.log("打印",value); // console.log("打印边界值",bound); return bound; }, };