1 line
22 KiB
JSON
1 line
22 KiB
JSON
{"remainingRequest":"D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\node_modules\\babel-loader\\lib\\index.js!D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\src\\views\\system\\timing\\components\\result.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\src\\views\\system\\timing\\components\\result.vue","mtime":1732871026799},{"path":"D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\babel.config.js","mtime":1732871025888},{"path":"D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1732872824662},{"path":"D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":1732872825017},{"path":"D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1732872824662},{"path":"D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":1732872825835}],"contextDependencies":[],"result":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nrequire(\"core-js/modules/es6.array.sort\");\nrequire(\"core-js/modules/es6.number.constructor\");\nrequire(\"core-js/modules/es6.regexp.match\");\nrequire(\"core-js/modules/es6.regexp.split\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = exports.default = {\n name: 'CrontabResult',\n props: ['ex'],\n data: function data() {\n return {\n dayRule: '',\n dayRuleSup: '',\n dateArr: [],\n resultList: [],\n isShow: false\n };\n },\n watch: {\n 'ex': 'expressionChange'\n },\n mounted: function mounted() {\n // 初始化 获取一次结果\n this.expressionChange();\n },\n methods: {\n // 表达式值变化时,开始去计算结果\n expressionChange: function expressionChange() {\n // 计算开始-隐藏结果\n this.isShow = false;\n // 获取规则数组[0秒、1分、2时、3日、4月、5星期、6年]\n var ruleArr = this.$options.propsData.ex.split(' ');\n // 用于记录进入循环的次数\n var nums = 0;\n // 用于暂时存符号时间规则结果的数组\n var resultArr = [];\n // 获取当前时间精确至[年、月、日、时、分、秒]\n var nTime = new Date();\n var nYear = nTime.getFullYear();\n var nMonth = nTime.getMonth() + 1;\n var nDay = nTime.getDate();\n var nHour = nTime.getHours();\n var nMin = nTime.getMinutes();\n var nSecond = nTime.getSeconds();\n // 根据规则获取到近100年可能年数组、月数组等等\n this.getSecondArr(ruleArr[0]);\n this.getMinArr(ruleArr[1]);\n this.getHourArr(ruleArr[2]);\n this.getDayArr(ruleArr[3]);\n this.getMonthArr(ruleArr[4]);\n this.getWeekArr(ruleArr[5]);\n this.getYearArr(ruleArr[6], nYear);\n // 将获取到的数组赋值-方便使用\n var sDate = this.dateArr[0];\n var mDate = this.dateArr[1];\n var hDate = this.dateArr[2];\n var DDate = this.dateArr[3];\n var MDate = this.dateArr[4];\n var YDate = this.dateArr[5];\n // 获取当前时间在数组中的索引\n var sIdx = this.getIndex(sDate, nSecond);\n var mIdx = this.getIndex(mDate, nMin);\n var hIdx = this.getIndex(hDate, nHour);\n var DIdx = this.getIndex(DDate, nDay);\n var MIdx = this.getIndex(MDate, nMonth);\n var YIdx = this.getIndex(YDate, nYear);\n // 重置月日时分秒的函数(后面用的比较多)\n var resetSecond = function resetSecond() {\n sIdx = 0;\n nSecond = sDate[sIdx];\n };\n var resetMin = function resetMin() {\n mIdx = 0;\n nMin = mDate[mIdx];\n resetSecond();\n };\n var resetHour = function resetHour() {\n hIdx = 0;\n nHour = hDate[hIdx];\n resetMin();\n };\n var resetDay = function resetDay() {\n DIdx = 0;\n nDay = DDate[DIdx];\n resetHour();\n };\n var resetMonth = function resetMonth() {\n MIdx = 0;\n nMonth = MDate[MIdx];\n resetDay();\n };\n // 如果当前年份不为数组中当前值\n if (nYear !== YDate[YIdx]) {\n resetMonth();\n }\n // 如果当前月份不为数组中当前值\n if (nMonth !== MDate[MIdx]) {\n resetDay();\n }\n // 如果当前“日”不为数组中当前值\n if (nDay !== DDate[DIdx]) {\n resetHour();\n }\n // 如果当前“时”不为数组中当前值\n if (nHour !== hDate[hIdx]) {\n resetMin();\n }\n // 如果当前“分”不为数组中当前值\n if (nMin !== mDate[mIdx]) {\n resetSecond();\n }\n\n // 循环年份数组\n goYear: for (var Yi = YIdx; Yi < YDate.length; Yi++) {\n var YY = YDate[Yi];\n // 如果到达最大值时\n if (nMonth > MDate[MDate.length - 1]) {\n resetMonth();\n continue;\n }\n // 循环月份数组\n goMonth: for (var Mi = MIdx; Mi < MDate.length; Mi++) {\n // 赋值、方便后面运算\n var MM = MDate[Mi];\n MM = MM < 10 ? '0' + MM : MM;\n // 如果到达最大值时\n if (nDay > DDate[DDate.length - 1]) {\n resetDay();\n if (Mi == MDate.length - 1) {\n resetMonth();\n continue goYear;\n }\n continue;\n }\n // 循环日期数组\n goDay: for (var Di = DIdx; Di < DDate.length; Di++) {\n // 赋值、方便后面运算\n var DD = DDate[Di];\n var thisDD = DD < 10 ? '0' + DD : DD;\n\n // 如果到达最大值时\n if (nHour > hDate[hDate.length - 1]) {\n resetHour();\n if (Di == DDate.length - 1) {\n resetDay();\n if (Mi == MDate.length - 1) {\n resetMonth();\n continue goYear;\n }\n continue goMonth;\n }\n continue;\n }\n\n // 判断日期的合法性,不合法的话也是跳出当前循环\n if (this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true && this.dayRule !== 'workDay' && this.dayRule !== 'lastWeek' && this.dayRule !== 'lastDay') {\n resetDay();\n continue goMonth;\n }\n // 如果日期规则中有值时\n if (this.dayRule == 'lastDay') {\n // 如果不是合法日期则需要将前将日期调到合法日期即月末最后一天\n\n if (this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) {\n while (DD > 0 && this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) {\n DD--;\n thisDD = DD < 10 ? '0' + DD : DD;\n }\n }\n } else if (this.dayRule == 'workDay') {\n // 校验并调整如果是2月30号这种日期传进来时需调整至正常月底\n if (this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) {\n while (DD > 0 && this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) {\n DD--;\n thisDD = DD < 10 ? '0' + DD : DD;\n }\n }\n // 获取达到条件的日期是星期X\n var thisWeek = this.formatDate(new Date(YY + '-' + MM + '-' + thisDD + ' 00:00:00'), 'week');\n // 当星期日时\n if (thisWeek == 1) {\n // 先找下一个日,并判断是否为月底\n DD++;\n thisDD = DD < 10 ? '0' + DD : DD;\n // 判断下一日已经不是合法日期\n if (this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) {\n DD -= 3;\n }\n } else if (thisWeek == 7) {\n // 当星期6时只需判断不是1号就可进行操作\n if (this.dayRuleSup !== 1) {\n DD--;\n } else {\n DD += 2;\n }\n }\n } else if (this.dayRule == 'weekDay') {\n // 如果指定了是星期几\n // 获取当前日期是属于星期几\n var _thisWeek = this.formatDate(new Date(YY + '-' + MM + '-' + DD + ' 00:00:00'), 'week');\n // 校验当前星期是否在星期池(dayRuleSup)中\n if (this.dayRuleSup.indexOf(_thisWeek) < 0) {\n // 如果到达最大值时\n if (Di == DDate.length - 1) {\n resetDay();\n if (Mi == MDate.length - 1) {\n resetMonth();\n continue goYear;\n }\n continue goMonth;\n }\n continue;\n }\n } else if (this.dayRule == 'assWeek') {\n // 如果指定了是第几周的星期几\n // 获取每月1号是属于星期几\n var _thisWeek2 = this.formatDate(new Date(YY + '-' + MM + '-' + DD + ' 00:00:00'), 'week');\n if (this.dayRuleSup[1] >= _thisWeek2) {\n DD = (this.dayRuleSup[0] - 1) * 7 + this.dayRuleSup[1] - _thisWeek2 + 1;\n } else {\n DD = this.dayRuleSup[0] * 7 + this.dayRuleSup[1] - _thisWeek2 + 1;\n }\n } else if (this.dayRule == 'lastWeek') {\n // 如果指定了每月最后一个星期几\n // 校验并调整如果是2月30号这种日期传进来时需调整至正常月底\n if (this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) {\n while (DD > 0 && this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) {\n DD--;\n thisDD = DD < 10 ? '0' + DD : DD;\n }\n }\n // 获取月末最后一天是星期几\n var _thisWeek3 = this.formatDate(new Date(YY + '-' + MM + '-' + thisDD + ' 00:00:00'), 'week');\n // 找到要求中最近的那个星期几\n if (this.dayRuleSup < _thisWeek3) {\n DD -= _thisWeek3 - this.dayRuleSup;\n } else if (this.dayRuleSup > _thisWeek3) {\n DD -= 7 - (this.dayRuleSup - _thisWeek3);\n }\n }\n // 判断时间值是否小于10置换成“05”这种格式\n DD = DD < 10 ? '0' + DD : DD;\n\n // 循环“时”数组\n goHour: for (var hi = hIdx; hi < hDate.length; hi++) {\n var hh = hDate[hi] < 10 ? '0' + hDate[hi] : hDate[hi];\n\n // 如果到达最大值时\n if (nMin > mDate[mDate.length - 1]) {\n resetMin();\n if (hi == hDate.length - 1) {\n resetHour();\n if (Di == DDate.length - 1) {\n resetDay();\n if (Mi == MDate.length - 1) {\n resetMonth();\n continue goYear;\n }\n continue goMonth;\n }\n continue goDay;\n }\n continue;\n }\n // 循环\"分\"数组\n goMin: for (var mi = mIdx; mi < mDate.length; mi++) {\n var mm = mDate[mi] < 10 ? '0' + mDate[mi] : mDate[mi];\n\n // 如果到达最大值时\n if (nSecond > sDate[sDate.length - 1]) {\n resetSecond();\n if (mi == mDate.length - 1) {\n resetMin();\n if (hi == hDate.length - 1) {\n resetHour();\n if (Di == DDate.length - 1) {\n resetDay();\n if (Mi == MDate.length - 1) {\n resetMonth();\n continue goYear;\n }\n continue goMonth;\n }\n continue goDay;\n }\n continue goHour;\n }\n continue;\n }\n // 循环\"秒\"数组\n for (var si = sIdx; si <= sDate.length - 1; si++) {\n var ss = sDate[si] < 10 ? '0' + sDate[si] : sDate[si];\n // 添加当前时间(时间合法性在日期循环时已经判断)\n if (MM !== '00' && DD !== '00') {\n resultArr.push(YY + '-' + MM + '-' + DD + ' ' + hh + ':' + mm + ':' + ss);\n nums++;\n }\n // 如果条数满了就退出循环\n if (nums == 5) break goYear;\n // 如果到达最大值时\n if (si == sDate.length - 1) {\n resetSecond();\n if (mi == mDate.length - 1) {\n resetMin();\n if (hi == hDate.length - 1) {\n resetHour();\n if (Di == DDate.length - 1) {\n resetDay();\n if (Mi == MDate.length - 1) {\n resetMonth();\n continue; // goYear\n }\n continue; // goMonth\n }\n continue; // goDay\n }\n continue; // goHour\n }\n continue; // goMin\n }\n } // goSecond\n } // goMin\n } // goHour\n } // goDay\n } // goMonth\n }\n // 判断100年内的结果条数\n if (resultArr.length == 0) {\n this.resultList = ['没有达到条件的结果!'];\n } else {\n this.resultList = resultArr;\n if (resultArr.length !== 5) {\n this.resultList.push('最近100年内只有上面' + resultArr.length + '条结果!');\n }\n }\n // 计算完成-显示结果\n this.isShow = true;\n },\n // 用于计算某位数字在数组中的索引\n getIndex: function getIndex(arr, value) {\n if (value <= arr[0] || value > arr[arr.length - 1]) {\n return 0;\n } else {\n for (var i = 0; i < arr.length - 1; i++) {\n if (value > arr[i] && value <= arr[i + 1]) {\n return i + 1;\n }\n }\n }\n },\n // 获取\"年\"数组\n getYearArr: function getYearArr(rule, year) {\n this.dateArr[5] = this.getOrderArr(year, year + 100);\n if (rule !== undefined) {\n if (rule.indexOf('-') >= 0) {\n this.dateArr[5] = this.getCycleArr(rule, year + 100, false);\n } else if (rule.indexOf('/') >= 0) {\n this.dateArr[5] = this.getAverageArr(rule, year + 100);\n } else if (rule !== '*') {\n this.dateArr[5] = this.getAssignArr(rule);\n }\n }\n },\n // 获取\"月\"数组\n getMonthArr: function getMonthArr(rule) {\n this.dateArr[4] = this.getOrderArr(1, 12);\n if (rule.indexOf('-') >= 0) {\n this.dateArr[4] = this.getCycleArr(rule, 12, false);\n } else if (rule.indexOf('/') >= 0) {\n this.dateArr[4] = this.getAverageArr(rule, 12);\n } else if (rule !== '*') {\n this.dateArr[4] = this.getAssignArr(rule);\n }\n },\n // 获取\"日\"数组-主要为日期规则\n getWeekArr: function getWeekArr(rule) {\n // 只有当日期规则的两个值均为“”时则表达日期是有选项的\n if (this.dayRule == '' && this.dayRuleSup == '') {\n if (rule.indexOf('-') >= 0) {\n this.dayRule = 'weekDay';\n this.dayRuleSup = this.getCycleArr(rule, 7, false);\n } else if (rule.indexOf('#') >= 0) {\n this.dayRule = 'assWeek';\n var matchRule = rule.match(/[0-9]{1}/g);\n this.dayRuleSup = [Number(matchRule[1]), Number(matchRule[0])];\n this.dateArr[3] = [1];\n if (this.dayRuleSup[1] == 7) {\n this.dayRuleSup[1] = 0;\n }\n } else if (rule.indexOf('L') >= 0) {\n this.dayRule = 'lastWeek';\n this.dayRuleSup = Number(rule.match(/[0-9]{1,2}/g)[0]);\n this.dateArr[3] = [31];\n if (this.dayRuleSup == 7) {\n this.dayRuleSup = 0;\n }\n } else if (rule !== '*' && rule !== '?') {\n this.dayRule = 'weekDay';\n this.dayRuleSup = this.getAssignArr(rule);\n }\n }\n },\n // 获取\"日\"数组-少量为日期规则\n getDayArr: function getDayArr(rule) {\n this.dateArr[3] = this.getOrderArr(1, 31);\n this.dayRule = '';\n this.dayRuleSup = '';\n if (rule.indexOf('-') >= 0) {\n this.dateArr[3] = this.getCycleArr(rule, 31, false);\n this.dayRuleSup = 'null';\n } else if (rule.indexOf('/') >= 0) {\n this.dateArr[3] = this.getAverageArr(rule, 31);\n this.dayRuleSup = 'null';\n } else if (rule.indexOf('W') >= 0) {\n this.dayRule = 'workDay';\n this.dayRuleSup = Number(rule.match(/[0-9]{1,2}/g)[0]);\n this.dateArr[3] = [this.dayRuleSup];\n } else if (rule.indexOf('L') >= 0) {\n this.dayRule = 'lastDay';\n this.dayRuleSup = 'null';\n this.dateArr[3] = [31];\n } else if (rule !== '*' && rule !== '?') {\n this.dateArr[3] = this.getAssignArr(rule);\n this.dayRuleSup = 'null';\n } else if (rule == '*') {\n this.dayRuleSup = 'null';\n }\n },\n // 获取\"时\"数组\n getHourArr: function getHourArr(rule) {\n this.dateArr[2] = this.getOrderArr(0, 23);\n if (rule.indexOf('-') >= 0) {\n this.dateArr[2] = this.getCycleArr(rule, 24, true);\n } else if (rule.indexOf('/') >= 0) {\n this.dateArr[2] = this.getAverageArr(rule, 23);\n } else if (rule !== '*') {\n this.dateArr[2] = this.getAssignArr(rule);\n }\n },\n // 获取\"分\"数组\n getMinArr: function getMinArr(rule) {\n this.dateArr[1] = this.getOrderArr(0, 59);\n if (rule.indexOf('-') >= 0) {\n this.dateArr[1] = this.getCycleArr(rule, 60, true);\n } else if (rule.indexOf('/') >= 0) {\n this.dateArr[1] = this.getAverageArr(rule, 59);\n } else if (rule !== '*') {\n this.dateArr[1] = this.getAssignArr(rule);\n }\n },\n // 获取\"秒\"数组\n getSecondArr: function getSecondArr(rule) {\n this.dateArr[0] = this.getOrderArr(0, 59);\n if (rule.indexOf('-') >= 0) {\n this.dateArr[0] = this.getCycleArr(rule, 60, true);\n } else if (rule.indexOf('/') >= 0) {\n this.dateArr[0] = this.getAverageArr(rule, 59);\n } else if (rule !== '*') {\n this.dateArr[0] = this.getAssignArr(rule);\n }\n },\n // 根据传进来的min-max返回一个顺序的数组\n getOrderArr: function getOrderArr(min, max) {\n var arr = [];\n for (var i = min; i <= max; i++) {\n arr.push(i);\n }\n return arr;\n },\n // 根据规则中指定的零散值返回一个数组\n getAssignArr: function getAssignArr(rule) {\n var arr = [];\n var assiginArr = rule.split(',');\n for (var i = 0; i < assiginArr.length; i++) {\n arr[i] = Number(assiginArr[i]);\n }\n arr.sort(this.compare);\n return arr;\n },\n // 根据一定算术规则计算返回一个数组\n getAverageArr: function getAverageArr(rule, limit) {\n var arr = [];\n var agArr = rule.split('/');\n var min = Number(agArr[0]);\n var step = Number(agArr[1]);\n while (min <= limit) {\n arr.push(min);\n min += step;\n }\n return arr;\n },\n // 根据规则返回一个具有周期性的数组\n getCycleArr: function getCycleArr(rule, limit, status) {\n // status--表示是否从0开始(则从1开始)\n var arr = [];\n var cycleArr = rule.split('-');\n var min = Number(cycleArr[0]);\n var max = Number(cycleArr[1]);\n if (min > max) {\n max += limit;\n }\n for (var i = min; i <= max; i++) {\n var add = 0;\n if (status == false && i % limit == 0) {\n add = limit;\n }\n arr.push(Math.round(i % limit + add));\n }\n arr.sort(this.compare);\n return arr;\n },\n // 比较数字大小(用于Array.sort)\n compare: function compare(value1, value2) {\n if (value2 - value1 > 0) {\n return -1;\n } else {\n return 1;\n }\n },\n // 格式化日期格式如:2017-9-19 18:04:33\n formatDate: function formatDate(value, type) {\n // 计算日期相关值\n var time = typeof value === 'number' ? new Date(value) : value;\n var Y = time.getFullYear();\n var M = time.getMonth() + 1;\n var D = time.getDate();\n var h = time.getHours();\n var m = time.getMinutes();\n var s = time.getSeconds();\n var week = time.getDay();\n // 如果传递了type的话\n if (type == undefined) {\n return Y + '-' + (M < 10 ? '0' + M : M) + '-' + (D < 10 ? '0' + D : D) + ' ' + (h < 10 ? '0' + h : h) + ':' + (m < 10 ? '0' + m : m) + ':' + (s < 10 ? '0' + s : s);\n } else if (type == 'week') {\n // 在quartz中 1为星期日\n return week + 1;\n }\n },\n // 检查日期是否存在\n checkDate: function checkDate(value) {\n var time = new Date(value);\n var format = this.formatDate(time);\n return value === format;\n }\n }\n};",null]} |