话不多说上代码!!!
import axios from 'axios';
export const notZero = (m, n) => {
if (!n || !m) {
return 0;
}
return m / n;
};
export const download = (filename, content, contentType) => {
if (!contentType) contentType = 'application/octet-stream';
var a = document.createElement('a');
var blob = new Blob([content], { type: contentType });
a.href = window.URL.createObjectURL(blob);
a.download = filename;
a.click();
};
export const valueIsNaN = (value) => {
return typeof value === 'number' && !isNaN(value);
};
export const nprogressschedule = (nprogress) => {
for (let index = 0; index < 8; index++) {
if (index === 0) {
nprogress.set(0.3 + index * 0.1);
} else if (index === 1) {
setTimeout(() => {
nprogress.set(0.3 + index * 0.1);
}, 200);
} else if (index === 2) {
setTimeout(() => {
nprogress.set(0.3 + index * 0.1);
}, 400);
} else if (index === 3) {
setTimeout(() => {
nprogress.set(0.3 + index * 0.1);
}, 450);
} else if (index === 4) {
setTimeout(() => {
nprogress.set(0.3 + index * 0.1);
}, 500);
} else if (index === 5) {
setTimeout(() => {
nprogress.set(0.3 + index * 0.1);
}, 550);
} else if (index === 6) {
setTimeout(() => {
nprogress.set(0.3 + index * 0.1);
}, 600);
} else if (index === 7) {
setTimeout(() => {
nprogress.set(1);
}, 700);
}
}
};
export const getVal = (obj, ...args) => {
let out = null;
if (obj || obj === 0) {
out = obj;
if (args && args.length > 0) {
for (let index = 0; index < args.length; index++) {
const key = args[index];
out = out[key];
if (out === undefined || out === null || out === '') {
return null;
}
}
} else {
if (out === undefined || out === null || out === '') {
return null;
}
}
}
return out;
};
export const keepDecimal = (val, num = 2) => {
if (val === '--' || val === '' || val === null || val == undefined) {
return '--';
}
if (Object.prototype.toString.call(val) == '[object String]') {
let val_new = parseFloat(val);
if (isNaN(val_new)) {
return val;
} else {
try {
return (Math.round(val_new * 100) / 100).toFixed(num);
} catch (error) {
console.error(error);
return val;
}
}
}
if (isNaN(val)) {
return val;
} else {
try {
return (Math.round(val * 100) / 100).toFixed(num);
} catch (error) {
console.error(error);
return val;
}
}
};
export const toVal = (obj, ...args) => {
const val = getVal(obj, ...args);
return val === null ? '--' : val;
};
export const elementContains = (parent, child) =>
parent !== child && parent.contains(child);
export const strRemoveNum = (str) => {
return str.replace(/[0-9]+/g, '');
};
export function downExceil(option) {
const {
url,
name = 'exceil',
query,
type = 'xls',
method = 'get',
data = {},
} = option;
if (method == 'get') {
var xhr = new XMLHttpRequest();
xhr.open('get', url, true);
xhr.send();
xhr.responseType = 'blob';
xhr.onload = function () {
if (this.status === 200) {
var blob = this.response;
let contentDisposition = xhr.getResponseHeader('content-disposition');
let temp = contentDisposition
? xhr
.getResponseHeader('content-disposition')
.split(';')[1]
.split('filename=')[1]
: '';
var reader = new FileReader();
reader.readAsDataURL(blob);
reader.onload = function (e) {
console.log(e);
const elink = document.createElement('a');
elink.download = decodeURI(escape(temp));
elink.style.display = 'none';
elink.href = e.target.result;
document.body.appendChild(elink);
elink.click();
URL.revokeObjectURL(elink.href);
document.body.removeChild(elink);
};
}
};
} else {
console.log(query, 'post');
axios
.post(url, query, {
responseType: 'blob',
params: query,
})
.then((res) => {
const blob = new Blob([res.data]);
const fileName = res.headers['content-disposition'];
const elink = document.createElement('a');
elink.download = decodeURI(
escape(fileName.split(';')[1].split('filename=')[1])
);
elink.style.display = 'none';
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink);
elink.click();
URL.revokeObjectURL(elink.href);
document.body.removeChild(elink);
});
}
}
export const objDeepCopy = (obj) => {
var result = Array.isArray(obj) ? [] : {};
for (var key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
if (typeof obj[key] === 'object' && obj[key] !== null) {
result[key] = objDeepCopy(obj[key]);
} else {
result[key] = obj[key];
}
}
}
return result;
};
export const isEqual = (objA, objB) => {
if (objA === objB) return objA !== 0 || 1 / objA === 1 / objB;
if (objA == null || objB == null) return objA === objB;
if (
Object.prototype.toString.call(objA) !==
Object.prototype.toString.call(objB)
)
return false;
switch (Object.prototype.toString.call(objA)) {
case '[object RegExp]':
case '[object String]':
return '' + objA === '' + objB;
case '[object Number]':
if (+objA !== +objA) {
return +objB !== +objB;
}
return +objA === 0 ? 1 / +objA === 1 / objB : +objA === +objB;
case '[object Date]':
case '[object Boolean]':
return +objA === +objB;
case '[object Array]':
for (let i = 0; i < objA.length; i++) {
if (!isEqual(objA[i], objB[i])) return false;
}
return true;
case '[object Object]': {
let keys = Object.keys(objA);
for (let i = 0; i < keys.length; i++) {
if (!isEqual(objA[keys[i]], objB[keys[i]])) return false;
}
keys = Object.keys(objB);
for (let i = 0; i < keys.length; i++) {
if (!isEqual(objA[keys[i]], objB[keys[i]])) return false;
}
return true;
}
default:
return false;
}
};