表格内cron表达式转成需要的时间格式


1.表格内添加 :formatter=""


<el-table-column
         label="监视周期"
         align="center"
         prop="corn"
         :formatter="cornFormat"
       />

2.方法

 // 频率corn转时间格式
    cornFormat(row, column) {
      let str = row.corn;
      // let str = row.corn;  每行数据的字段
      return this.cronChangeDate(str);
    },
// corn表达式转时间
    cronChangeDate(str) {
      console.log(str, 'strstr');
      if (str == null) {
        return '--';
      } else {
        var toDate = {};
        if (!str) {
          toDate.loopType = '单次循环';
        } else {
          var result = str.split(' ').join('');
          var nArr = str.split(' ');
          var countData = this.getPlaceholderCount(result);
          // console.log(countData, 'countData');
          if (countData.count1 === 1 && countData.count2 === 1) {
            // 只有一个'?'一个'*'则是按周循环
            toDate.loopType = '周';
            var keys = nArr[5];
            var en2cnMap = {
              1: '周日',
              2: '周一',
              3: '周二',
              4: '周三',
              5: '周四',
              6: '周五',
              7: '周六'
            };
            var cnKeys = keys.split(',').map(function (key, idx) {
              return en2cnMap[key];
            });
            toDate.loopValue = cnKeys.join(',');
          } else if (countData.count1 + countData.count2 === 3) {
            toDate.loopType = '月';
            var mot = [];
            var mkeys = nArr[3].split(',');
            for (var i = 0; i < mkeys.length; i++) {
              let mo = mkeys[i] + '号';
              mot.push(mo);
            }
            toDate.loopValue = mot.join(',');
          } else {
            toDate.loopType = '日';
          }
          toDate.loopTime = nArr[2] + ':' + nArr[1] + ':' + nArr[0];
        }
        let data = '';
        if (!toDate.loopValue) {
          data = '每' + toDate.loopType + ' ' + toDate.loopTime;
        } else {
          data =
            '每' +
            toDate.loopType +
            ' ' +
            toDate.loopValue +
            ' ' +
            toDate.loopTime;
        }
        return data;
      }
    },
    // 统计字符串中包含某个字符的个数
    getPlaceholderCount(strSource) {
      var count1 = 0; // ?的个数
      var count2 = 0; // *的个数
      strSource.replace(/\*|\?/g, function (m, i) {
        if (m === '?') {
          count1++;
        } else if (m === '*') {
          count2++;
        }
      });
      var obj = {};
      obj.count1 = count1; // ?
      obj.count2 = count2; // *
      // console.log(obj, 'obj');
      return obj; //返回一个对象,根据需要得到想要的值
    },
posted @ 2025-02-26 09:00  刘酸酸sour  阅读(52)  评论(0)    收藏  举报