| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791 |
- // 全局公共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;
-
- },
- };
|