Js功能代码块
时间补0
function time(value){
if (!value) return ''
if (value.indexOf(':') === -1) return value
let result = ''
const arr = value.split(':')
// hour
if (parseInt(arr[0]) < 10) {
result = '0' + arr[0]
} else {
result = arr[0]
}
if (parseInt(arr[1]) < 10) {
result = result + ':0' + arr[1]
} else {
result = result + ':' + arr[1]
}
if (parseInt(arr[2]) < 10) {
result = result + ':0' + arr[2]
} else {
result = result + ':' + arr[2]
}
return result
}
金额补零
/**
* 金额数据处理
*/
function test (value) {
if (!value) return '0.00'
const result = parseFloat(value)
if (Number.isInteger(result)) {
return result
}
return result.toFixed(2)
}
移动端适配
// 定义最大的fontSize
const MAX_FONT_SIZE = 42
// 监听html文档被解析完成的事件
document.addEventListener('DOMContentLoaded', () => {
// 获取HTML标签
const html = document.querySelector('html')
// 获取根元素 fontssize 标准,屏幕宽度/10
let fontSize = window.innerWidth / 10
// 获取到的fontsize 不允许超过我们定义的最大值
fontSize = fontSize > MAX_FONT_SIZE ? MAX_FONT_SIZE : fontSize
// 定义根源html fontsize 的大小(rem)
html.style.fontSize = fontSize + 'px'
})
判断是否是iphonex
/**
*判断当前设备是否是iphonex
*@return boolean true 表示当前设备为iphonex。false就表示不为ipnonex
*/
const isIphonex = () => {
if (typeof window !== 'undefined' && window) {
return /iphone/gi.test(window.navigator.userAgent) && window.screen.height >= 812
}
return false
}
window.isIphoneX = isIphonex()
md5加密
/* eslint-disable */
!(function(a) {
'use strict';
function b(a, b) {
var c = (65535 & a) + (65535 & b),
d = (a >> 16) + (b >> 16) + (c >> 16);
return (d << 16) | (65535 & c);
}
function c(a, b) {
return (a << b) | (a >>> (32 - b));
}
function d(a, d, e, f, g, h) {
return b(c(b(b(d, a), b(f, h)), g), e);
}
function e(a, b, c, e, f, g, h) {
return d((b & c) | (~b & e), a, b, f, g, h);
}
function f(a, b, c, e, f, g, h) {
return d((b & e) | (c & ~e), a, b, f, g, h);
}
function g(a, b, c, e, f, g, h) {
return d(b ^ c ^ e, a, b, f, g, h);
}
function h(a, b, c, e, f, g, h) {
return d(c ^ (b | ~e), a, b, f, g, h);
}
function i(a, c) {
(a[c >> 5] |= 128 << c % 32), (a[(((c + 64) >>> 9) << 4) + 14] = c);
var d,
i,
j,
k,
l,
m = 1732584193,
n = -271733879,
o = -1732584194,
p = 271733878;
for (d = 0; d < a.length; d += 16)
(i = m),
(j = n),
(k = o),
(l = p),
(m = e(m, n, o, p, a[d], 7, -680876936)),
(p = e(p, m, n, o, a[d + 1], 12, -389564586)),
(o = e(o, p, m, n, a[d + 2], 17, 606105819)),
(n = e(n, o, p, m, a[d + 3], 22, -1044525330)),
(m = e(m, n, o, p, a[d + 4], 7, -176418897)),
(p = e(p, m, n, o, a[d + 5], 12, 1200080426)),
(o = e(o, p, m, n, a[d + 6], 17, -1473231341)),
(n = e(n, o, p, m, a[d + 7], 22, -45705983)),
(m = e(m, n, o, p, a[d + 8], 7, 1770035416)),
(p = e(p, m, n, o, a[d + 9], 12, -1958414417)),
(o = e(o, p, m, n, a[d + 10], 17, -42063)),
(n = e(n, o, p, m, a[d + 11], 22, -1990404162)),
(m = e(m, n, o, p, a[d + 12], 7, 1804603682)),
(p = e(p, m, n, o, a[d + 13], 12, -40341101)),
(o = e(o, p, m, n, a[d + 14], 17, -1502002290)),
(n = e(n, o, p, m, a[d + 15], 22, 1236535329)),
(m = f(m, n, o, p, a[d + 1], 5, -165796510)),
(p = f(p, m, n, o, a[d + 6], 9, -1069501632)),
(o = f(o, p, m, n, a[d + 11], 14, 643717713)),
(n = f(n, o, p, m, a[d], 20, -373897302)),
(m = f(m, n, o, p, a[d + 5], 5, -701558691)),
(p = f(p, m, n, o, a[d + 10], 9, 38016083)),
(o = f(o, p, m, n, a[d + 15], 14, -660478335)),
(n = f(n, o, p, m, a[d + 4], 20, -405537848)),
(m = f(m, n, o, p, a[d + 9], 5, 568446438)),
(p = f(p, m, n, o, a[d + 14], 9, -1019803690)),
(o = f(o, p, m, n, a[d + 3], 14, -187363961)),
(n = f(n, o, p, m, a[d + 8], 20, 1163531501)),
(m = f(m, n, o, p, a[d + 13], 5, -1444681467)),
(p = f(p, m, n, o, a[d + 2], 9, -51403784)),
(o = f(o, p, m, n, a[d + 7], 14, 1735328473)),
(n = f(n, o, p, m, a[d + 12], 20, -1926607734)),
(m = g(m, n, o, p, a[d + 5], 4, -378558)),
(p = g(p, m, n, o, a[d + 8], 11, -2022574463)),
(o = g(o, p, m, n, a[d + 11], 16, 1839030562)),
(n = g(n, o, p, m, a[d + 14], 23, -35309556)),
(m = g(m, n, o, p, a[d + 1], 4, -1530992060)),
(p = g(p, m, n, o, a[d + 4], 11, 1272893353)),
(o = g(o, p, m, n, a[d + 7], 16, -155497632)),
(n = g(n, o, p, m, a[d + 10], 23, -1094730640)),
(m = g(m, n, o, p, a[d + 13], 4, 681279174)),
(p = g(p, m, n, o, a[d], 11, -358537222)),
(o = g(o, p, m, n, a[d + 3], 16, -722521979)),
(n = g(n, o, p, m, a[d + 6], 23, 76029189)),
(m = g(m, n, o, p, a[d + 9], 4, -640364487)),
(p = g(p, m, n, o, a[d + 12], 11, -421815835)),
(o = g(o, p, m, n, a[d + 15], 16, 530742520)),
(n = g(n, o, p, m, a[d + 2], 23, -995338651)),
(m = h(m, n, o, p, a[d], 6, -198630844)),
(p = h(p, m, n, o, a[d + 7], 10, 1126891415)),
(o = h(o, p, m, n, a[d + 14], 15, -1416354905)),
(n = h(n, o, p, m, a[d + 5], 21, -57434055)),
(m = h(m, n, o, p, a[d + 12], 6, 1700485571)),
(p = h(p, m, n, o, a[d + 3], 10, -1894986606)),
(o = h(o, p, m, n, a[d + 10], 15, -1051523)),
(n = h(n, o, p, m, a[d + 1], 21, -2054922799)),
(m = h(m, n, o, p, a[d + 8], 6, 1873313359)),
(p = h(p, m, n, o, a[d + 15], 10, -30611744)),
(o = h(o, p, m, n, a[d + 6], 15, -1560198380)),
(n = h(n, o, p, m, a[d + 13], 21, 1309151649)),
(m = h(m, n, o, p, a[d + 4], 6, -145523070)),
(p = h(p, m, n, o, a[d + 11], 10, -1120210379)),
(o = h(o, p, m, n, a[d + 2], 15, 718787259)),
(n = h(n, o, p, m, a[d + 9], 21, -343485551)),
(m = b(m, i)),
(n = b(n, j)),
(o = b(o, k)),
(p = b(p, l));
return [m, n, o, p];
}
function j(a) {
var b,
c = '';
for (b = 0; b < 32 * a.length; b += 8) c += String.fromCharCode((a[b >> 5] >>> b % 32) & 255);
return c;
}
function k(a) {
var b,
c = [];
for (c[(a.length >> 2) - 1] = void 0, b = 0; b < c.length; b += 1) c[b] = 0;
for (b = 0; b < 8 * a.length; b += 8) c[b >> 5] |= (255 & a.charCodeAt(b / 8)) << b % 32;
return c;
}
function l(a) {
return j(i(k(a), 8 * a.length));
}
function m(a, b) {
var c,
d,
e = k(a),
f = [],
g = [];
for (f[15] = g[15] = void 0, e.length > 16 && (e = i(e, 8 * a.length)), c = 0; 16 > c; c += 1) (f[c] = 909522486 ^ e[c]), (g[c] = 1549556828 ^ e[c]);
return (d = i(f.concat(k(b)), 512 + 8 * b.length)), j(i(g.concat(d), 640));
}
function n(a) {
var b,
c,
d = '0123456789abcdef',
e = '';
for (c = 0; c < a.length; c += 1) (b = a.charCodeAt(c)), (e += d.charAt((b >>> 4) & 15) + d.charAt(15 & b));
return e;
}
function o(a) {
return unescape(encodeURIComponent(a));
}
function p(a) {
return l(o(a));
}
function q(a) {
return n(p(a));
}
function r(a, b) {
return m(o(a), o(b));
}
function s(a, b) {
return n(r(a, b));
}
function t(a, b, c) {
return b ? (c ? r(b, a) : s(b, a)) : c ? p(a) : q(a);
}
'function' == typeof define && define.amd
? define(function() {
return t;
})
: (a.md5 = t);
})(this);
selectRow(selection, row) {
if(selection.length > 1){
let del_row = selection.shift()
this.$refs.table.toggleRowSelection(del_row, false)
this.$message.info('只能选择一项')
} else if(selection.length === 1) {
this.multipleSelection = selection
} else if(selection.length === 0) {
this.$message.info('请选择一项')
}
},
选择单选
如果首字母是数子取全部,或者中文第一个字符
first: (val) =>
(val = String(parseInt(val)) === 'NaN' ? val.substring(0, 1) : parseInt(val))
},
下载文件流
exportPDF(this.form.id).then(res => {
if (res.status === 200) {
let headersName = ''
if (res.headers['content-disposition']) {
headersName = res.headers['content-disposition'].split('=')[1]
} else {
headersName = '工程变更申请'
}
let fileName = decodeURI(headersName)
let blob = new Blob([res.data], { type: 'application/pdf' })
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveBlob(blob, fileName)
} else {
let objectUrl = URL.createObjectURL(blob)
const link = document.createElement('a')
link.href = objectUrl
link.download = fileName
link.click()
URL.revokeObjectURL(objectUrl)
}
}
})
导出pdf
/**
* 导出PDF
*/
$scope.exportPDF = function() {
var url = "equipment/exportPDF.do";
var graphType = 1; //非浮式
if($scope.type=='浮式'){
graphType = 2; //浮式
}
var data = {platformId:$scope.platformid,graphType:graphType};
var type = 'application/octet-stream';
commonService.post(url,data,{responseType:"arraybuffer"}).success(function (data, status, headers, config) {
var fileName = "井控装置单("+$scope.platformname+").pdf";
saveAs(new Blob([data], { type: type }), fileName); // 中文乱码
});
};
风险管控台账
// const reader = res.body.getReader()
// console.log(reader)
const contentDisposition = res.headers.get("content-disposition")
const contentType = res.headers.get("content-type")
const filename = contentDisposition.match(/filename="(.+)"/)[1]
const file = new Blob([res.body], { type: contentType }) // this is not working
const objectUrl = URL.createObjectURL(file)
.then((response) => response.blob())
.then((blob) => URL.createObjectURL(blob))
.then((href) => {
const a = document.createElement("a")
document.body.appendChild(a)
a.style = "display: none"
a.href = href
a.download = fileName
a.click()
})
window.open("http://www.w3school.com.cn","_blank","toolbar=yes, location=yes, directories=no, status=no, menubar=yes, scrollbars=yes, resizable=no, copyhistory=yes, width=400, height=400")
改变游览器动态窗口
let addHeight = () =>{
this.height = window.innerHeight
}
window.addEventListener('resize',debuce(addHeight,1000))
function debuce(fn,time){
let timer = null
return function (){
if(timer!==null){
clearTimeout(timer)
}
timer = setTimeout(fn,time)
}
函数防抖
function debuce(fn,time){
let timer = null
return function (){
if(timer!==null){
clearTimeout(timer)
}
timer = setTimeout(fn,time)
}
函数节流
function throttle(cd,time=300){
var t = null;
return function(){
if(t) return;
t = setTimeout(() => {
cd.call(this);
t = null;
}, time);
}
}
vue2.0过滤器
import filters from '@/utils/filter.js'
Object.keys(filters).forEach(key=>Vue.filter(key,filters[key]))
下载excel
export const csvDownload = <T = any>(
param: any
) => new Promise<{ param: ReponseDataStruct<T> }>(() => {
const myDate = wijmo.Globalize.formatDate(new Date(), 'yyyyMMddHHmm');
const fileName = `AAR0020_${myDate}.csv`;
const workbook = new ExcelJS.Workbook();
workbook.addWorksheet("sheet1");
const worksheet = workbook.getWorksheet("sheet1");
worksheet.columns = [
{ header: "法人コード", key: "hjnCd" },
{ header: "店舗", key: "tenCd" },
{ header: "棚卸予定日付", key: "tnoYotYmd" },
{ header: "部門コード", key: "bmnCd" },
{ header: "棚卸区分", key: "tnoKb" },
{ header: "棚卸年月度", key: "tnoMdo" },
{ header: "棚卸基準日付", key: "tnoKjuYmd" },
{ header: "随時棚卸確定区分", key: "ztnKteKb" },
{ header: "一斉棚卸仮確定区分", key: "itnKarKteKb" },
{ header: "一斉棚卸本確定区分", key: "itnHonKteKb" },
{ header: "部門名", key: "bmn10ktKj" },
];
worksheet.addRows(param);
const uint8Array = workbook.csv.writeBuffer(); // csvの場合
const blob = new Blob([uint8Array], { type: 'application/octet-binary;charset=utf-8' });
if ('download' in document.createElement('a')) {
// 非IE
const elink = document.createElement('a');
elink.download = fileName;
elink.style.display = 'none';
// オンにする
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink);
elink.click();
URL.revokeObjectURL(elink.href);
document.body.removeChild(elink);
} else {
(navigator as any).msSaveBlob(blob, fileName);
}
});
判断数字
// typeof + isFinite 但是NaN和infinty 也是数字类型
function isNumber(num){
return typeof num === 'number' && isFinite(num)
}
// typeof + isFinite // isFinite(null) / true 会帅选NaN和infinity
function isNumber(num){
return typeof num === 'number' && isFinite(num)
}
//最推荐正则
function isNumber(num){
return /^[0-9]+.?[0-9]*$/.test(num)
}