常用工具函数 持续更新

7 篇文章 0 订阅
6 篇文章 1 订阅
这篇博客介绍了如何在前端实现页面只刷新一次的功能,通过检查URL参数来决定是否添加额外的标识进行刷新。同时,展示了如何解析URL参数对象,并根据不同的环境进行页面跳转。此外,还提供了消息提示、全屏加载、模态对话框和输入框操作等实用函数的实现。
摘要由CSDN通过智能技术生成
只刷新一次页面
/**
 * @paramstr 刷新一次
 */
export const refreshOnce = (hrefUrl) => {
  let url = hrefUrl //把当前页面的地址赋给变量 url
  const times = url.split('?') //分切变量 url 分隔符号为 “?”
  if (times[1] != 1) {
    //如果?后的值不等于1表示没有刷新
    url += '?1' //把变量 url 的值加入 ?1
    self.location.replace(url) //刷新页面
  }
}

页面使用

import { refreshOnce } from '@/utils'

refreshOnce(location.href)

获取url参数对象

/**
 * @paramstr 获取url参数对象
 */
export const parseQueryString = (url: string) => {
  // 编写代码实现
  // 1.查找?的下标
  const index = url.indexOf('?')
  // 2.截取?后面的字符串
  const str = url.slice(index + 1)
  // 3.根据&将字符串转成数组
  const arr = str.split('&')

  // 4. 声明对象用来存储信息
  const obj = {}
  for (let i = 0; i < arr.length; i++) {
    // arr[0] action=home
    const arr2 = arr[i].split('=')
    // arr2的第一个成员做属性, 第二个成员做值
    obj[arr2[0]] = arr2[1]
  }
  return obj
}

页面使用

import { parseQueryString } from '@/utils'      

const hrefUrl = window.location.href
const { mall } = parseQueryString(hrefUrl)
if (mall == 1) {
// 跳转到另一个项目的使用 开发,测试,正式 
   if (process.env.VITE_USER_NODE_ENV == 'development') {
     window.location.href = `http://XXX.XXX.XXX.XXX:8081/#/admin/shop?token=${res.result.token}`
     } else {
     hrefUrl.indexOf('test') != -1
      ? (window.location.href = `测试前缀/#/admin/shop?token=${res.result.token}`)
       : (window.location.href = `正式前缀/#/admin/shop?token=${res.result.token}`)
	 }
    return
}
import { ElNotification,ElMessageBox } from 'element-plus'
import nprogress from 'nprogress'
// 消息提示
export function toast(message,type = "success",dangerouslyUseHTMLString = true){
    ElNotification({
        message,
        type,
        dangerouslyUseHTMLString,
        duration:3000
    })
}

// 显示全屏loading
export function showFullLoading(){
  nprogress.start()
}

// 隐藏全屏loading
export function hideFullLoading(){
  nprogress.done()
}

export function showModal(content = "提示内容",type = "warning",title = ""){
    return ElMessageBox.confirm(
        content,
        title,
        {
          confirmButtonText: '确认',
          cancelButtonText: '取消',
          type,
        }
      )
}

// 弹出输入框
export function showPrompt(tip,value = ""){
  return ElMessageBox.prompt(tip, '', {
    confirmButtonText: '确认',
    cancelButtonText: '取消',
    inputValue:value
  })
}

// 将query对象转成url参数
export function queryParams(query){
  let q = []
  for (const key in query) {
      if(query[key]){
          q.push(`${key}=${encodeURIComponent(query[key])}`)
      }
  }
  let r = q.join("&")
  r = r ? ("?"+r) : ""
  return r
}

// 上移
export function useArrayMoveUp(arr,index){
  swapArray(arr,index,index - 1)
}

// 下移
export function useArrayMoveDown(arr,index){
  swapArray(arr,index,index + 1)
}

function swapArray(arr,index1,index2){
  arr[index1] = arr.splice(index2,1,arr[index1])[0]
  return arr
}

// sku排列算法
export function cartesianProductOf() {
  return Array.prototype.reduce.call(arguments, function (a, b) {
      var ret = [];
      a.forEach(function (a) {
          b.forEach(function (b) {
              ret.push(a.concat([b]));
          });
      });
      return ret;
  }, [
      []
  ]);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

织_网

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值