js utils

import router from “@/router”;
import Vue from “vue”;
import { myMessage } from ‘./resetMessage’;
import { newFileUpload } from “@/api/common”;

// 防抖
export const debounce = (fn, delay) => {
let timer = null;
return function () {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(() => {
fn.apply(this, arguments);
}, delay);
};
};

// 节流
export function throttle(fn, delay) {
let flag = true;
return function () {
if (!flag) {
return;
}
setTimeout(() => {
fn.apply(this, arguments);
flag = true;
}, delay);
flag = false;
};
}
// 递归
export function getLastLevelNodes(treeArray) {
let result = [];
function traverse(node, level) {
if (!node.children || node.children.length === 0) {
result.push({ …node, level });
} else {
node.children.forEach(child => traverse(child, level + 1));
}
}
treeArray.forEach(node => traverse(node, 1));
return result;
}

// 递归遍历每一级区域code并获取下级区域节点,实现级联回显
export function mapCode(superiorCode, nodes, index, getAreaSelectList) {
if (superiorCode && superiorCode.length) {
getAreaSelectList({
superiorCode: superiorCode[index],
}).then((res) => {
let filterItem = nodes.filter(
(item) => item.code === superiorCode[index]
);
if (res.data?.length) {
this.KaTeX parse error: Expected 'EOF', got '}' at position 55: … || []); }̲ else { …set(filterItem[0], “leaf”, true);
}
if (index < superiorCode.length - 1) {
index++;
this.mapCode(superiorCode, filterItem[0].children, index);
}
});
}
}

// b64Data–>传入加密的数据进行解密
export function unzip(b64Data) {
const pako = require(“pako”);
let strData = atob(b64Data);
// 将二进制字符串转换为字符数数组
const charData = strData.split(“”).map(function (x) {
return x.charCodeAt(0);
});
// 将数字数组转换为字节数组
const binData = new Uint8Array(charData);
// // unzip
const data = pako.inflate(binData);
// 将gunzipped byteArray转换回ascii字符串:
strData = arrayBufferToString(new Uint16Array(data));
return decodeURIComponent(escape(strData));
}

// 加密
export function zip(str) {
const pako = require(“pako”);
// const binaryString = pako.gzip(str, { to: ‘string’ })
// return btoa(binaryString)
// 将字符串转换为UTF-8编码的字节数组
var utf8Encoder = new TextEncoder();
var data = utf8Encoder.encode(str);
// 使用pako.js进行gzip压缩
var compressedData = pako.gzip(data);
// 将压缩后的数据转换为Base64编码的字符串
return btoa(String.fromCharCode.apply(null, compressedData));
}

function arrayBufferToString(buffer) {
var bufView = new Uint16Array(buffer);
var length = bufView.length;
var result = “”;
var addition = Math.pow(2, 16) - 1;
for (var i = 0; i < length; i += addition) {
if (i + addition > length) {
addition = length - i;
}
result += String.fromCharCode.apply(
null,
bufView.subarray(i, i + addition)
);
}
return result;
}

// 导出
export function exportFilep(url, params, filename,num) {
return new Promise((resolve, reject) => {
const axios = require(“axios”);
const { getCookies } = require(“@/utils/auth”);
const baseUrl = process.env.VUE_APP_BASE_API;
url = baseUrl + url;
axios
.post(url, params, {
responseType: “blob”,
headers: {
Authorization: getCookies(“token”),
},
})
.then((res) => {
const aLink = document.createElement(“a”);
let reader = new FileReader();
reader.readAsText(res.data, “utf-8”);
reader.onload = function () {
if (reader.result.length > 100) {
aLink.href = URL.createObjectURL(res.data);

          if (num) {
            aLink.download =
            (filename ||
            decodeURI(
              res.headers["content-disposition"].split("filename=")[1]
            ))+'.xlsx';
          }else{
            aLink.download =
          filename ||
          decodeURI(
            res.headers["content-disposition"].split("filename=")[1]
          );
          }
        aLink.click();
        URL.revokeObjectURL(url);
      }
      resolve();
    };
  })
  .catch((err) => {
    reject(err);
  });

});
}
// 导出
export function exportFile(url, params, filename) {
return new Promise((resolve, reject) => {
const axios = require(“axios”);
const { getCookies } = require(“@/utils/auth”);
const baseUrl = process.env.VUE_APP_BASE_API;
url = baseUrl + url;
axios({
method: ‘get’,
url: url,
params,
responseType: ‘blob’,
headers: {
Authorization: getCookies(“token”)
},
}).then(res=>{
console.log(res,‘rrrr’);
const aLink = document.createElement(“a”);
let reader = new FileReader();
reader.readAsText(res.data, “utf-8”);
reader.onload = function () {
if (reader.result.length > 100) {
aLink.href = URL.createObjectURL(res.data);
aLink.download =
filename ||
decodeURI(
res.headers[“content-disposition”].split(“filename=”)[1]
);
aLink.click();
URL.revokeObjectURL(url);
}
resolve();
};

}).catch((err) => {
      reject(err);
    });

});
}

function getNum(len, radix) {
const chars = “0123456789”.split(“”);
let uuid = [],
i;
radix = radix || chars.length;
if (len) {
for (i = 0; i < len; i++) {
uuid[i] = chars[0 | (Math.random() * radix)];
}
}
return uuid.join(“”);
}

// 上传文件
export function uploadFile(f , fileName, client,minioInfo) {
// try {

  // const axios = require("axios");
  const formData = new FormData();
  formData.append('file', f);
  
  // // // 使用axios发送请求
  // // axios({
  // //   url: process.env.VUE_APP_BASE_API + '/resource/file/upload',
  // //   method: 'POST',
  // //   data: formData
  // // })
  // // .then(response => {
  // //   console.log(response)
  // // })
  // // .catch(error => {
  // //   console.error(error);
  // // });

  // return new Promise((resolve, reject) => {
    
  // })

  return newFileUpload(formData).then(res => {
    console.log(res,'/**/**/*/*')
    // resolve(res.data)
    if(res.code == 200){
      return res.data
    }
    console.log(res.message)
    throw new Error(res.message)
    
  }).catch(err => {
    console.log(err)
    myMessage({
      message: err?.message || "上传失败",
      type: "error",
      duration: 5 * 1000,
    });
  })







  

  // let suffix = fileName.substr(fileName.lastIndexOf("."));
  // let num = getNum(6, 10);
  // let storeAs = suffix.substr(1) + "/" + new Date() * 1 + "/" + num + suffix;
  // let reader = new FileReader();
  // reader.readAsArrayBuffer(f);
  // return new Promise((resolve, reject) => {
  //   reader.onload = function (e) {
  //     let res = e.target.result;//ArrayBuffer
  //     let buf = Buffer.from(res);//Buffer 
  //     const metaData = {
  //       'content-type': f.type,
  //       'content-length': f.size
  //     }
  //     console.log(client,'this.$ossClientthis.$ossClientthis.$ossClient2222');
  //     return   client?.putObject(minioInfo.bucket, storeAs, buf, f.size, metaData,function (err, data) {
  //       if (err){
  //         myMessage({
  //           message: err,
  //           type: "error",
  //           duration: 5 * 1000,
  //         });
  //       }else{
  //         let obj = {};
  //         obj.fileKey = storeAs;
  //         obj.originalName = fileName
  //         let urls=minioInfo.endPoint.indexOf("//")>0?minioInfo.endPoint:('http://'+minioInfo.endPoint)
  //         obj.url =  `${urls}:${minioInfo.port}/${minioInfo.bucket}/${storeAs}`;
  //         resolve(obj)
  //       }
  //     });
  //   }
  // })

// } catch (e) {
// }
}

// 深拷贝
export function deepCopy(obj = {}) {
let newobj = null;
//判断是否需要继续进行递归
if (typeof obj == “object” && obj !== null) {
newobj = obj instanceof Array ? [] : {};
//进行下一层递归克隆
for (var i in obj) {
newobj[i] = deepCopy(obj[i]);
}
//如果不是对象直接赋值
} else newobj = obj;
return newobj;
}

// qs

export const qs=(obj,flag)=>{
const ar=[]
Object.keys(obj).forEach(key=>{
const v=obj[key]
if(flag){
if(typeof v!==‘undefined’ && v!null && v!‘’){
ar.push(key+‘=’+v)
}
}else{
ar.push(key+‘=’+(v||‘’))
}
})
return ar.join(‘&’)
}
// 每三位以‘逗号’隔开
export function toThousands(n) {
let number = Number(n)
let num = null
let floatNum = null
if(String(number).includes(‘.’)) {
const splitArr = String(number).split(‘.’)
num = splitArr[0]
floatNum = splitArr[1]
} else num = number
const arr = [];
while (num >= 1000) {
arr.push((num % 1000).toString().padStart(3, ‘0’)); // 00x,0xx时取模时0会消失,用padStart补齐0
num = Math.floor(num / 1000)
}
arr.push(num)
return floatNum > 0 ? arr.reverse().join(‘,’)+ .${floatNum}: arr.reverse().join(‘,’);
}

/*

  • 跳转页面

  • @Description: 主系统会有多个子系统菜单,为了跳转到当前系统下的相应菜单

  • this.menuProjectId 拼接了路由前面的项目id
    /
    export function goToSystemPath(path, route) {
    var reg = /[1-9][0-9]
    /g
    const pathUrl = route.match(reg) || []
    let menuProjectId = pathUrl.length ? pathUrl[0] : undefined
    const p = menuProjectId ? /${menuProjectId}${path}: path
    router.push§
    }

    //度°分′秒″转度
    export function ToDigital(strDu, strFen, strMiao, len) {
    len = (len > 6 || typeof (len) == “undefined”) ? 6 : len;//精确到小数点后最多六位
    strDu = (typeof (strDu) == “undefined” || strDu == “”) ? 0 : parseFloat(strDu);
    strFen = (typeof (strFen) == “undefined” || strFen == “”) ? 0 : parseFloat(strFen) / 60;
    strMiao = (typeof (strMiao) == “undefined” || strMiao == “”) ? 0 : parseFloat(strMiao) / 3600;
    var digital = strDu + strFen + strMiao;
    if (digital == 0) {
    return “”;
    } else {
    return digital.toFixed(len);
    }
    }
    //度转度°分′秒″
    export function ToDegrees(val) {
    if (typeof (val) == “undefined” || val == “”) {
    return “”;
    }
    var i = val.indexOf(‘.’);
    var strDu = i < 0 ? val : val.substring(0, i);//获取度
    var strFen = 0;
    var strMiao = 0;
    if (i > 0) {
    var strFen = “0” + val.substring(i);
    strFen = strFen * 60 + “”;
    i = strFen.indexOf(‘.’);
    if (i > 0) {
    strMiao = “0” + strFen.substring(i);
    strFen = strFen.substring(0, i);//获取分
    strMiao = strMiao * 60 + “”;
    i = strMiao.indexOf(‘.’);
    strMiao = strMiao.substring(0, i + 5);//取到小数点后面三位
    strMiao = parseFloat(strMiao).toFixed(2);//精确小数点后面两位
    }
    }
    return strDu + “,” + strFen + “,” + strMiao;
    }

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值