vue各种时间类型转换

 时间范围['2024-04-17 14:36:27', '2024-04-24 14:36:27']

console.log(this.$getRecentDays()); 页面使用默认7天  也可以指定console.log(this.$getRecentDays(30));

['2024-04-17 14:36:27', '2024-04-24 14:36:27']  默认值

function getDateString (date, fmt = 'yyyy-MM-dd') {
  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(
      RegExp.$1,
      (date.getFullYear() + '').substr(4 - RegExp.$1.length)
    )
  }
  let o = {
    'M+': date.getMonth() + 1,
    'd+': date.getDate(),
    'h+': date.getHours(),
    'm+': date.getMinutes(),
    's+': date.getSeconds(),
  }
  for (let k in o) {
    if (new RegExp(`(${k})`).test(fmt)) {
      let str = o[k] + ''
      fmt = fmt.replace(
        RegExp.$1,
        RegExp.$1.length === 1 ? str : padLeftZero(str)
      )
    }
  }
  return fmt
}
export function getRecentDays (duration = 7, fmt = 'yyyy-MM-dd hh:mm:ss') {
  let oneDayLong = 24 * 60 * 60 * 1000
  let nowTime = Date.now()
  let pre7DayTime = nowTime - duration * oneDayLong
  let now = new Date(nowTime)
  let pre7Day = new Date(pre7DayTime)
  return [getDateString(pre7Day, fmt), getDateString(now, fmt)]
}

  开始时间结束时间['2024-04-17 00:00:00', '2024-04-24 23:59:59']

console.log(this.$todayTimer(30)); 也是可以自定义范围呢


export function todayTimer (duration = 7, fmt = 'yyyy-MM-dd') {
  let oneDayLong = 24 * 60 * 60 * 1000
  let nowTime = Date.now()
  let pre7DayTime = nowTime - duration * oneDayLong
  let now = new Date(nowTime)
  let pre7Day = new Date(pre7DayTime)
  return [
    getDateString(pre7Day, fmt) + ' ' + '00:00:00',
    getDateString(now, fmt) + ' ' + '23:59:59',
  ]
}

今年的起始时间 和结束时间 ['2024-01-01 00:00:00', '2024-12-31 23:59:59']

export function todayTimer (duration = 7, fmt = 'yyyy-MM-dd') {
  let oneDayLong = 24 * 60 * 60 * 1000
  let nowTime = Date.now()
  let pre7DayTime = nowTime - duration * oneDayLong
  let now = new Date(nowTime)
  let pre7Day = new Date(pre7DayTime)
  return [
    getDateString(pre7Day, fmt) + ' ' + '00:00:00',
    getDateString(now, fmt) + ' ' + '23:59:59',
  ]
}

 当月的开始结束时间 ['2024-04-01 00:00:00', '2024-04-30 23:59:59']

export function ofMonth () {
  const startOfMonth = moment().startOf('month').format('YYYY-MM-DD 00:00:00'); // 本月的起始时间
  const endOfMonth = moment().endOf('month').format('YYYY-MM-DD 23:59:59'); // 本月的结束时间
  return [startOfMonth, endOfMonth]
}

 最近几个月 ['2023-10-31 00:00:00', '2024-04-30 23:59:59']

最近几个月 ['2023-10-31 00:00:00', '2024-04-30 23:59:59']

 console.log(this.$recentMonths('month',6));

export function recentMonths (type, val) {
  const now = moment();
  if (type == 'day') {
    const startDate = now.clone().subtract(val - 1, 'days').startOf('day');
    const endDate = now.clone().endOf('day').hours(23).minutes(59).seconds(59);
    const dayRange = [startDate.format('YYYY-MM-DD HH:mm:ss'), endDate.format('YYYY-MM-DD HH:mm:ss')];
    return dayRange;
  }
  if (type == 'week') {
    const weeksAgo = now.clone().subtract(val - 1, 'weeks').startOf('isoWeek');
    const thisWeekEnd = now.clone().endOf('week').hours(23).minutes(59).seconds(59);
    const recentWeeksRange = [weeksAgo.format('YYYY-MM-DD HH:mm:ss'), thisWeekEnd.format('YYYY-MM-DD HH:mm:ss')];
    // console.log(recentWeeksRange);
    return recentWeeksRange;
  }
  if (type == 'month') {
    const sixMonthsAgo = now.clone().subtract(val, 'months').endOf('month').startOf('day');
    const thisMonthEnd = now.clone().endOf('month').hours(23).minutes(59).seconds(59);
    const recentSixMonthsRange = [
      sixMonthsAgo.format('YYYY-MM-DD HH:mm:ss'),
      thisMonthEnd.format('YYYY-MM-DD HH:mm:ss')
    ]
    return recentSixMonthsRange
  }
}

各种时间类型就不一一列了    

下面是完整的js代码

import * as moment from 'moment';
moment.suppressDeprecationWarnings = true;
// 封装的 一些关于时间的方法
function random (low, high) {
  if (arguments.length === 1) {
    high = low
    low = 0
  }
  return Math.floor(low + Math.random() * (high - low))
}

function randomOne (arr) {
  return arr[random(arr.length)]
}

function getDateString (date, fmt = 'yyyy-MM-dd') {
  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(
      RegExp.$1,
      (date.getFullYear() + '').substr(4 - RegExp.$1.length)
    )
  }
  let o = {
    'M+': date.getMonth() + 1,
    'd+': date.getDate(),
    'h+': date.getHours(),
    'm+': date.getMinutes(),
    's+': date.getSeconds(),
  }
  for (let k in o) {
    if (new RegExp(`(${k})`).test(fmt)) {
      let str = o[k] + ''
      fmt = fmt.replace(
        RegExp.$1,
        RegExp.$1.length === 1 ? str : padLeftZero(str)
      )
    }
  }
  return fmt
}

function getDateStringCh (date) {
  if (!(date instanceof Date)) {
    return ''
  }
  let year = date.getFullYear()
  let month = date.getMonth() + 1
  let day = date.getDate()
  let hour = date.getHours()
  return `${year}年${month}月${day}日 ${hour}时`
}

function getWeekStartDateAndEndDateRange () {
  let oneDayLong = 24 * 60 * 60 * 1000
  let now = new Date()
  let mondayTime = now.getTime() - (now.getDay() - 1) * oneDayLong
  let sundayTime = now.getTime() + (7 - now.getDay()) * oneDayLong
  let monday = new Date(mondayTime)
  let sunday = new Date(sundayTime)
  let weekRange = [getDateString(monday), getDateString(sunday)]
  return weekRange
}

// ['2024-04-17 14:36:27', '2024-04-24 14:36:27']  默认值
// console.log(this.$getRecentDays()); 页面使用
export function getRecentDays (duration = 7, fmt = 'yyyy-MM-dd hh:mm:ss') {
  let oneDayLong = 24 * 60 * 60 * 1000
  let nowTime = Date.now()
  let pre7DayTime = nowTime - duration * oneDayLong
  let now = new Date(nowTime)
  let pre7Day = new Date(pre7DayTime)
  return [getDateString(pre7Day, fmt), getDateString(now, fmt)]
}

function getMonthStartDateAndDateRange () {
  let oneDayLong = 24 * 60 * 60 * 1000
  let now = new Date()
  let year = now.getFullYear()
  let monthStartDate = new Date(year, now.getMonth(), 1) //当前月1号
  let nextMonthStartDate = new Date(year, now.getMonth() + 1, 1) //下个月1号
  let days =
    (nextMonthStartDate.getTime() - monthStartDate.getTime()) / oneDayLong //计算当前月份的天数
  let monthEndDate = new Date(year, now.getMonth(), days)
  let monthRange = [getDateString(monthStartDate), getDateString(monthEndDate)]
  return monthRange
}

function padLeftZero (str) {
  return ('00' + str).substr(str.length)
}

function resetForm (refName) {
  this.$refs[refName] && this.$refs[refName].resetFields()
}

export function debounce (func, wait, immediate) {
  let timeout, args, context, timestamp, result

  const later = function () {
    // 据上一次触发时间间隔
    const last = +new Date() - timestamp

    // 上次被包装函数被调用时间间隔 last 小于设定时间间隔 wait
    if (last < wait && last > 0) {
      timeout = setTimeout(later, wait - last)
    } else {
      timeout = null
      // 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用
      if (!immediate) {
        result = func.apply(context, args)
        if (!timeout) context = args = null
      }
    }
  }

  return function (...args) {
    context = this
    timestamp = +new Date()
    const callNow = immediate && !timeout
    // 如果延时不存在,重新设定延时
    if (!timeout) timeout = setTimeout(later, wait)
    if (callNow) {
      result = func.apply(context, args)
      context = args = null
    }

    return result
  }
}

//  console.log(this.$randomUUID());
// 1713940662895.5952  数据数
function randomUUID () {
  return Date.now() + Math.random() + ''
}

const resetTimer = (timer) => {
  if (timer) {
    clearTimeout(timer)
    timer = null
  }
}


// ['2024-04-17 00:00:00', '2024-04-24 23:59:59']  开始时间结束时间
export function todayTimer (duration = 7, fmt = 'yyyy-MM-dd') {
  let oneDayLong = 24 * 60 * 60 * 1000
  let nowTime = Date.now()
  let pre7DayTime = nowTime - duration * oneDayLong
  let now = new Date(nowTime)
  let pre7Day = new Date(pre7DayTime)
  return [
    getDateString(pre7Day, fmt) + ' ' + '00:00:00',
    getDateString(now, fmt) + ' ' + '23:59:59',
  ]
}

// 今年的起始时间 和结束时间 ['2024-01-01 00:00:00', '2024-12-31 23:59:59']
export function ofYear () {
  const startOfYear = moment().startOf('year').format('YYYY-MM-DD 00:00:00');
  const endOfYear = moment().endOf('year').format('YYYY-MM-DD 23:59:59');
  return [startOfYear, endOfYear]
}

//  这个月的开始结束时间 ['2024-04-01 00:00:00', '2024-04-30 23:59:59']
export function ofMonth () {
  const startOfMonth = moment().startOf('month').format('YYYY-MM-DD 00:00:00'); // 本月的起始时间
  const endOfMonth = moment().endOf('month').format('YYYY-MM-DD 23:59:59'); // 本月的结束时间
  return [startOfMonth, endOfMonth]
}

// 上传json;模板
export function funDownload (content, filename) {
  // 创建隐藏的可下载链接
  const eleLink = document.createElement('a')
  eleLink.download = filename
  eleLink.style.display = 'none'
  // 字符内容转变成blob地址
  let blob = new Blob([content])
  eleLink.href = URL.createObjectURL(blob)
  // 触发点击
  document.body.appendChild(eleLink)
  eleLink.click()
  // 然后移除
  document.body.removeChild(eleLink)
}

// 对象转json字符串
export function objToJson (obj) {
  let newObj = {}
  for (let key in obj) {
    if (key === 'id') {
      newObj[key] = obj[key]
      continue
    }
    newObj[key] = JSON.stringify(obj[key])
  }
  return newObj
}
// 打印
export function print (id) {
  var bdhtml = window.document.body.innerHTML
  var jubuData = document.getElementById(id).innerHTML
  window.document.body.innerHTML = jubuData
  var style = document.createElement('style');
  style.innerHTML = `
    @media print {
      @page {
        size: auto;
        margin: 5mm;
      }
      
      body {
        margin: 0;
      }
      .no-print {
        display: none;
      }
      .el-divider {
        border: 1px solid #dcdfe6;
        margin: 24px 0; 
      }
    }
  `;
  document.head.appendChild(style);


  const table = document.querySelectorAll(".el-table__header,.el-table__body,.el-table__footer");
  for (let i = 0; i < table.length; i++) {
    const tableItem = table[i];
    tableItem.style.width = '100%';
    const child = tableItem.childNodes;
    for (let j = 0; j < child.length; j++) {
      const element = child[j];
      if (element.localName == 'colgroup') {
        element.innerHTML = '';
      }
    }
  }
  window.print()
  location.reload()

  document.head.removeChild(style);

  window.document.body.innerHTML = bdhtml
}

// 打印图片
export function printCanvas (id, i) {
  var oldstr = document.body.innerHTML // 获取当前页面内容用以还原
  var div_print = document.getElementById(id) // 获取要打印部分的内容
  var cv = document.getElementsByTagName('canvas')[i] //获取canvas
  var resImg = document.getElementById(id) //获取包裹canvas的标签
  // 将canvas转为图片
  // var context = cv.getContext("2d")
  var img = new Image()
  var strDataURI = cv.toDataURL('image/png')
  img.src = strDataURI
  // 图片加载完成之后
  img.onload = function () {
    // 执行打印
    console.log(img);
    setTimeout(function () {
      resImg.innerHTML = `<img src="${strDataURI}">` // 用图片替代canvas
      var newstr = div_print.innerHTML
      document.body.innerHTML = newstr // 将页面内容改为修改后的内容
      window.print() // 打印
      window.location.reload() // 重新加载页面
      document.body.innerHTML = oldstr // 将页面内容还原
    }, 1000)
  }
}
// 下载echarts为图片
export function exportpic (chartInstance, name = 'charts') {
  let picInfo = chartInstance.getDataURL({
    type: 'png',
    pixelRatio: 2,  //放大两倍下载,之后压缩到同等大小展示。解决生成图片在移动端模糊问题
    backgroundColor: '#fff'
  });//获取到的是一串base64信息

  const elink = document.createElement('a');
  elink.download = name + '.png';
  elink.style.display = 'none';
  elink.href = picInfo;
  document.body.appendChild(elink);
  elink.click();
  URL.revokeObjectURL(elink.href); // 释放URL 对象
  document.body.removeChild(elink)
}

// 复制
export function copyText (row, column, cell, event) {
  // 双击复制
  let save = function (e) {
    e.clipboardData.setData('text/plain', event.target.innerText);
    e.preventDefault();  //阻止默认行为
  }
  document.addEventListener('copy', save);//添加一个copy事件
  document.execCommand("copy");//执行copy方法
  this.$message({ message: '复制成功', type: 'success' })//提示
}

// ['2024-04-23 14:39:48', '2024-04-24 14:39:48'] 
export function getDefaultTimeRange (type = "real", val, fmt = 'yyyy-MM-dd hh:mm:ss') {
  let start = new Date()
  if (type === 'real') {
    start.setDate(start.getDate() - (val ? val : 1))
  }
  if (type === 'hour') {
    start.setDate(start.getDate() - (val ? val : 1))
  }
  if (type === 'day') {
    start.setMonth(start.getMonth() - (val ? val : 1))
  }
  if (type === 'week') {
    start.setMonth(start.getMonth() - (val ? val : 3))
  }
  if (type === 'month') {
    start.setFullYear(start.getFullYear() - (val ? val : 1))
  }
  if (type === 'quarter') {
    val = val || 3; // 如果val未提供,则默认为3
    start.setFullYear(start.getFullYear() - Math.floor(val / 4));
    start.setMonth(start.getMonth() - (val % 4) * 3);
  }
  if (type === 'year') {
    start.setFullYear(start.getFullYear() - (val ? val : 10))
  }
  return [getDateString(start, fmt), getDateString(new Date(), fmt)]
}

// ['2024-04-24 00:00:00', '2024-04-24 23:59:59']  一天结束或开始  
export function getDefaultDayRange (type = "real", fmt = 'yyyy-MM-dd hh:mm:ss') {
  let start = new Date()
  let end = new Date()
  if (type === 'real') {
    start.setDate(start.getDate())
    end.setDate(start.getDate())
  }
  if (type === 'hour') {
    start.setDate(start.getDate())
    end.setDate(start.getDate())
  }
  if (type === 'day') {
    start.setDate(1)
    end.setMonth(end.getMonth() + 1)
    end.setDate(0)
  }
  if (type === 'month') {
    start.setDate(1)
    start.setMonth(0)
    end.setFullYear(end.getFullYear() + 1)
    end.setMonth(0)
    end.setDate(0)
  }
  return [getDateString(start, fmt).split(' ')[0] + ' 00:00:00', getDateString(end, fmt).split(' ')[0] + ' 23:59:59']
}


// 最近几个月 ['2023-10-31 00:00:00', '2024-04-30 23:59:59'] 
//  console.log(this.$recentMonths('month',6));
export function recentMonths (type, val) {
  const now = moment();
  if (type == 'day') {
    const startDate = now.clone().subtract(val - 1, 'days').startOf('day');
    const endDate = now.clone().endOf('day').hours(23).minutes(59).seconds(59);
    const dayRange = [startDate.format('YYYY-MM-DD HH:mm:ss'), endDate.format('YYYY-MM-DD HH:mm:ss')];
    return dayRange;
  }
  if (type == 'week') {
    const weeksAgo = now.clone().subtract(val - 1, 'weeks').startOf('isoWeek');
    const thisWeekEnd = now.clone().endOf('week').hours(23).minutes(59).seconds(59);
    const recentWeeksRange = [weeksAgo.format('YYYY-MM-DD HH:mm:ss'), thisWeekEnd.format('YYYY-MM-DD HH:mm:ss')];
    // console.log(recentWeeksRange);
    return recentWeeksRange;
  }
  if (type == 'month') {
    const sixMonthsAgo = now.clone().subtract(val, 'months').endOf('month').startOf('day');
    const thisMonthEnd = now.clone().endOf('month').hours(23).minutes(59).seconds(59);
    const recentSixMonthsRange = [
      sixMonthsAgo.format('YYYY-MM-DD HH:mm:ss'),
      thisMonthEnd.format('YYYY-MM-DD HH:mm:ss')
    ]
    return recentSixMonthsRange
  }
}

// 参数为秒   返回时间
// console.log(this.$timeRangeFormat(600));   10分钟
export function timeRangeFormat (seconds) {
  const timeUnits = [
    {
      label: '天',
      value: Math.floor(seconds / (24 * 3600))
    },
    {
      label: '小时',
      value: Math.floor((seconds % (24 * 3600)) / 3600)
    },
    {
      label: '分钟',
      value: Math.floor((seconds % 3600) / 60)
    },
    {
      label: '秒',
      value: Math.floor(seconds % 60)
    }
  ]

  return timeUnits.filter(v => v.value > 0).map(item => `${item.value}${item.label}`).join('').trim()
}

// {startDateTime: '2023-03-03 00:00:00', endDateTime: '2023-03-03 23:59:59'}
// console.log(this.$timeRange('day','2023-03-03'));
export function timeRange (type, val) {
  let startDateTime, endDateTime;
  switch (type) {
    case 'hour':
      startDateTime = moment(val).startOf('hour');
      endDateTime = moment(val).endOf('hour');
      break;
    case 'day':
      startDateTime = moment(val).startOf('day');
      endDateTime = moment(val).endOf('day');
      break;
    case 'week':
      let value = val.toString()
      const weekYear = value.substring(0, 4)
      const weekNumber = value.substring(4, 6)
      startDateTime = moment().isoWeekYear(parseInt(weekYear)).isoWeek(parseInt(weekNumber)).startOf('isoWeek');
      endDateTime = moment().isoWeekYear(parseInt(weekYear)).isoWeek(parseInt(weekNumber)).endOf('isoWeek');
      break;
    case 'month':
      startDateTime = moment(val, "YYYY-MM").startOf('month');
      endDateTime = moment(val, "YYYY-MM").endOf('month');
      break;
    case 'quarter':
      let valSeason = val.toString()
      const year = valSeason.substring(0, 4)
      const quarter = valSeason.substring(4, 5)
      startDateTime = moment().quarter(quarter).year(year).startOf('quarter');
      endDateTime = moment().quarter(quarter).year(year).endOf('quarter');
      break;
    case 'year':
      startDateTime = moment(val, "YYYY").startOf('year');
      endDateTime = moment(val, "YYYY").endOf('year');
      break;
    default:
      return;
  }
  startDateTime = startDateTime.format("YYYY-MM-DD HH:mm:ss");
  endDateTime = endDateTime.format("YYYY-MM-DD HH:mm:ss");
  return { startDateTime, endDateTime };
}
export function timeFormatting (type, val) {
  if (type == 'hour') {
    let hour = moment().set({ hour: val, minute: 0, second: 0, millisecond: 0 }).format('YYYY-MM-DD HH');
    return hour
  } else if (type == 'day') {
    let day = moment().date(val).format('YYYY-MM-DD');
    return day
  } else if (type == 'month') {
    let month = moment(val, 'MM').format('YYYY-MM');
    return month
  }
}
//  console.log(this.$timeFormatType('day', '2023123')); 2023-12-03
export function timeFormatType (type, val) {
  if (type == 'hour') {

    let [year, month, date, hour] = String(val).split(/(\d{4})(\d{2})(\d{2})(\d{2})/).slice(1);
    // 创建moment对象并设置时间
    let momentDate = moment().set({ year: parseInt(year), month: parseInt(month) - 1, date: parseInt(date), hour: parseInt(hour), minute: 0, second: 0, millisecond: 0 });
    // 格式化时间
    let hourVal = momentDate.format('YYYY-MM-DD HH');

    return hourVal
  } else if (type == 'day') {
    let day = moment(val, 'YYYYMMDD').format('YYYY-MM-DD');
    return day
  } else if (type == 'month') {
    const month = moment(val, 'YYYYMM').format('YYYY-MM');
    return month
  } else if (type == 'year') {
    const year = moment(val, 'YYYY').format('YYYY');
    return year
  } else if (type == 'week') {
    const weekYear = val.toString().substring(0, 4);
    const weekNum = val.toString().substring(4);
    const startDate = moment(`${weekYear}-01-01`).add((weekNum) * 7, 'days').startOf('isoWeek');
    let week = startDate.format('YYYY-WW');
    return week
  } else if (type == 'quarter') {
    const quarterYear = val.toString().substring(0, 4);
    const quarterNum = val.toString().substring(4);

    // 计算季度的第一天日期
    const startDate = moment(`${quarterYear}-01-01`).add((quarterNum - 1) * 3, 'months').startOf('month');

    let quarter = startDate.format('YYYY-Q');
    return quarter
  }
}

// console.log(this.$tenMonthsAgo(24, 'month'));  
// ['2022-04', '2024-04']
export function tenMonthsAgo (val, type) {
  if (type == 'hour') {
    return hour
  } else if (type == 'day') {
    return day
  } else if (type == 'month') {
    const tenMonthsAgo = moment().subtract(val, 'months').format('YYYY-MM');
    const currentMonth = moment().format('YYYY-MM');
    const month = [tenMonthsAgo, currentMonth];
    return month
  }
}
export function tenMonthsHistory (val, type) {
  if (type == 'hour') {
    return hour
  } else if (type == 'day') {
    return day
  } else if (type == 'month') {
    const tenMonthsAgo = moment().subtract(val, 'months').format('YYYY-MM');
    const currentMonth = moment().subtract(1, 'months').format('YYYY-MM');
    const month = [tenMonthsAgo, currentMonth];
    return month
  }
}

// 20240101   console.log(this.$timeTypeFormatting('day', '2024-01-01'),);
export function timeTypeFormatting (type, value) {
  switch (type) {
    case 'hour':
      return value.substring(0, 13).replace(/[- :]/g, "");
      break;
    case 'day':
      return value.replace(/[- :]/g, "");
      break;
    case 'week':
      return (moment(value).isoWeekYear() + ' ' + moment(value).isoWeek()).replace(/[- :]/g, "");
      break;
    case 'month':
      return value.replace(/[- :]/g, "");
      break;
    case 'year':
      return value.replace(/[- :]/g, "");
      break;
    default: '';
  }
}



export function getBase64 (file) {
  return new Promise(function (resolve, reject) {
    const reader = new FileReader()
    let imgResult = ''
    reader.readAsDataURL(file)
    reader.onload = function () {
      imgResult = reader.result
    }
    reader.onerror = function (error) {
      reject(error)
    }
    reader.onloadend = function () {
      resolve(imgResult)
    }
  })
}

export function getEmpty (val) {
  if (val !== null && val !== false && val !== undefined && val !== NaN && val !== '') {
    return val
  } else {
    return '-'
  }
}
export function getEmptyUnit (val, unit) {
  if (val !== null && val !== false && val !== undefined && val !== NaN && val !== '' && val != '0.00' && val !== 0 && val && val !== 'NaN') {
    return unit
  } else {
    return ''
  }
}


export function findObjectByValue (arr, val) {
  let result = [];

  function search (arr, parentObjects = []) {
    for (let i = 0; i < arr.length; i++) {
      if (arr[i].id === val) {
        // 找到匹配项,将当前对象和所有父级对象都添加到结果数组
        result.push(...parentObjects, arr[i]);
      }
      if (arr[i].childs && arr[i].childs.length > 0) {
        // 递归搜索子对象,将当前对象添加到父级对象数组中
        search(arr[i].childs, [...parentObjects, arr[i]]);
      }
    }
  }

  search(arr);
  return result;
}





export default {
  install (vue) {
    this.addGlobalMethods(vue)
  },
  addGlobalMethods (vue) {
    vue.prototype.$random = random
    vue.prototype.$resetForm = resetForm
    vue.prototype.$randomOne = randomOne
    vue.prototype.$getDateString = getDateString
    vue.prototype.$getRecentDays = getRecentDays
    vue.prototype.$getWeekStartDateAndEndDateRange =
      getWeekStartDateAndEndDateRange
    vue.prototype.$getMonthStartDateAndDateRange = getMonthStartDateAndDateRange
    vue.prototype.$debounce = debounce
    vue.prototype.$getDateStringCh = getDateStringCh
    vue.prototype.$randomUUID = randomUUID
    vue.prototype.$resetTimer = resetTimer
    vue.prototype.$todayTimer = todayTimer
    vue.prototype.$funDownload = funDownload
    vue.prototype.$objToJson = objToJson
    vue.prototype.$print = print
    vue.prototype.$printCanvas = printCanvas
    vue.prototype.$exportpic = exportpic
    vue.prototype.$copyText = copyText
    vue.prototype.$getDefaultTimeRange = getDefaultTimeRange
    vue.prototype.$timeRangeFormat = timeRangeFormat
    vue.prototype.$timeRange = timeRange
    vue.prototype.$ofYear = ofYear
    vue.prototype.$ofMonth = ofMonth
    vue.prototype.$getDefaultDayRange = getDefaultDayRange
    vue.prototype.$timeFormatting = timeFormatting
    vue.prototype.$getBase64 = getBase64
    vue.prototype.$getEmpty = getEmpty
    vue.prototype.$getEmptyUnit = getEmptyUnit
    vue.prototype.$findObjectByValue = findObjectByValue
    vue.prototype.$tenMonthsAgo = tenMonthsAgo
    vue.prototype.$timeTypeFormatting = timeTypeFormatting
    vue.prototype.$timeFormatType = timeFormatType
    vue.prototype.$tenMonthsHistory = tenMonthsHistory
    vue.prototype.$recentMonths = recentMonths
  },
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/573306.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高可靠性部署系列(2)--- IPS双机热备

高可靠性部署系列(2)--- IPS双机热备 前言网络拓扑设备选型网络规划组网需求配置思路操作步骤结果验证前言 近期有读者留言:“因华为数通模拟器仅能支持USG6000V的防火墙,无法支持别的安全产品,导致很多网络安全的方案和产品功能无法模拟练习,是否有真机操作的实验或者案…

Kimi 大模型支持 Tool Calling 功能,并入驻字节「扣子Coze」开发平台!

Kimi 大模型API 支持 Tool Calling 功能 Kimi 大模型学会「使用工具」了,API 已支持 Tool Calling 功能。开发者们在打造自己的 AI Agents 时,可以让 Kimi 大模型与丰富的自定义外部工具进行交互,打开 AI 应用更大的想象空间。例如,在对话中,当用户问到一家公司的地址时,…

SAP BPC UJKT使用详解

SAP BPC(SAP Business Planning and Consolidation)旨在帮助企业进行财务规划、预算编制、预测分析和财务报告。 一、UJKT是什么&#xff1f; UJKT是什么呢&#xff1f;它是SAP 中的一个TCODE&#xff0c;该事务码的描述为脚本逻辑检测器&#xff0c;对应的源代码程序为&#…

nuxt3 无法创建项目问题

Error: Failed to download template from registry: Failed to download https://raw.githubusercontent.com/nuxt/starter/templates/templates/v3.json: TypeError: fetch failed 错误信息 解决方案 进入windows系统修改hosts文件 C:\Windows\System32\drivers\etc增加以…

IDEA中Vue开发环境搭建

1. IDEA安装Vue.js 文件>设置>插件>搜索Vue.js并安装。 2. 安装Node.js 官网地址&#xff1a;https://nodejs.org 安装包下载地址&#xff1a;https://nodejs.org/en/download 下载并安装&#xff0c;安装时&#xff0c;勾选添加系统变量选项。 # 如果正确安装…

如何批量跟踪京东物流信息

随着电商行业的快速发展&#xff0c;快递业务日益繁忙&#xff0c;无论是商家还是消费者&#xff0c;都需要一种高效、便捷的快递查询工具。快递批量查询高手软件应运而生&#xff0c;以其强大的功能和便捷的操作体验&#xff0c;赢得了广大电商、微商精英们的青睐。 快递批量…

通用计算平台与医用计算平台的差异

1.通用计算平台参考信息 《医疗器械软件注册审查指导原则&#xff08;2022年修订版&#xff09;&#xff08;2022年第9号&#xff09;》中关于“通用计算平台”有说参考《IMDRF/SaMD WG/N10 FINAL: 2013》 2.IMDRF/SaMD WG/N10 FINAL: 2013中关于通用计算平台的说明 3.通用计…

YOLOv8常见水果识别检测系统(yolov8模型,从图像、视频和摄像头三种路径识别检测)

1.效果视频&#xff08;常见水果识别&#xff08;yolov8模型&#xff0c;从图像、视频和摄像头三种路径识别检测&#xff09;_哔哩哔哩_bilibili&#xff09; 资源包含可视化的水果识别检测系统&#xff0c;可识别图片和视频当中出现的六类常见的水果&#xff0c;包括&#xf…

git lab 2.7版本修改密码命令

1.gitlab-rails console -e production Ruby: ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [x86_64-linux] GitLab: 14.9.0-jh (51fb4a823f6) EE GitLab Shell: 13.24.0 PostgreSQL: 12.7 2根据用户名修改密码 user User.find_by(username: ‘username’) # 替换’use…

2024年航空航天与工业技术国际学术会议(IACAIT 2024)

2024年航空航天与工业技术国际学术会议(IACAIT 2024) 2024 International Conference on Aerospace and Industrial Technology 一、【会议简介】 2024年航空航天与工业技术国际学术会议&#xff0c;将汇集全球顶尖专家&#xff0c;探讨前沿技术。 这次会议主题为“航空航天与…

PMP®考试的形式、题型、考试内容和趋势

PMP考试形式&#xff1a; 国内的PMP考试是由中国国际人才交流基金会和PMI共同组织举办&#xff0c;统一采取的都是线下笔试。一年考4次&#xff0c;今年的考试安排在3月、6月、8月、11月。3月10日的PMP考试已结束&#xff0c;接下来是6月份的考试&#xff0c;考试时间预计在6月…

2024年了,还有必要搭建企业网站吗?

现在企业的营销手段五花八门。当下火爆的短视频直播平台展现出的裂变效应也取得不错的成绩&#xff0c;这不禁让很多企业舍弃做网站的念头&#xff0c;投入自媒体账号。那么&#xff0c;2024年了&#xff0c;还有必要搭建企业网站吗&#xff1f; 我们分两种企业来看&#xff1…

利用弹性云主机部署高效数据库系统

在当今云计算的时代&#xff0c;弹性云主机&#xff08;EC2&#xff09;为我们提供了前所未有的灵活性和可扩展性&#xff0c;使得在云端部署高效的数据库系统成为可能。本文将从选择适当的云服务配置、优化数据库设置、建立完备的数据备份与恢复策略&#xff0c;以及加强数据库…

LeetCode-219. 存在重复元素 II

题目描述 给你一个整数数组 nums 和一个整数 k &#xff0c;判断数组中是否存在两个 不同的索引 i 和 j &#xff0c;满足 nums[i] nums[j] 且 abs(i - j) < k 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&…

springboot+vue学习用品商店商城系统java毕业设计ucozu

该系统利用java语言、MySQL数据库&#xff0c;springboot框架&#xff0c;结合目前流行的 B/S架构&#xff0c;将互动式学习用品网上商城平台的各个方面都集中到数据库中&#xff0c;以便于用户的需要。该系统在确保系统稳定的前提下&#xff0c;能够实现多功能模块的设计和应用…

天人、人间、二神之间的宗教战争

文本&#xff1a;创世记 2-3、马太福音 23-24、启示录 12-13  天人、地球人和两位神之间的宗教战争是什么样的&#xff1f;  属天的&#xff08;天体&#xff09;是神&#xff08;创世记6&#xff09;&#xff0c;属地的&#xff08;地上的人&#xff09;是肉身。有两个主要的…

学python的第十九天

网络通信和访问数据库 1.1 基本的网络知识 TCP/IP IP是低级的路由协议&#xff0c;它将数据拆分在许多小的数据包中&#xff0c;并通过网络将他们发送到某一特定地址&#xff0c;但无法保证所有包都抵达目的地&#xff0c;也不能保证包按顺序抵达 TCP&#xff08;传输控制协议…

【数据结构】哈希桶

目录 前言&#xff1a; 开散列&#xff08;哈希桶&#xff09; 开散列的概念 哈希桶的模拟实现 整体框架 查找 插入 删除 析构函数 前言&#xff1a; 闭散列线性探测缺点&#xff1a;一旦发生哈希冲突&#xff0c;所有的产生哈希冲突的数据连续存储在一块区域&#xff…

算法-栈操作

1047. 删除字符串中的所有相邻重复项 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:string removeDuplicates(string s) {string stack;for(char& ch:s){if(stack.size()>0&&chstack.back()){stack.pop_back();}else{stack.push_back(ch);}…

2.搭建增长模型-福格行为模型

福格行为模型 Bmat B为行动 m是动机 a是能力 t是触发 mat三者是同时出现的 比如连续签到30天&#xff0c;才送1天会员&#xff0c;这明摆着欺负人&#xff0c;用户难有积极性 但是签到即可或者会员1天&#xff0c;连续30天送30天&#xff0c;这样用户每天都会积极的来签到&…
最新文章